Python Web自动化测试学习-PO模型在自动化测试中的应用(3)

这是一个关于自动化测试的博客,包括了登录、主页、关于我们和退出登录功能的测试用例。使用unittest进行组织,通过HTMLTestRunner生成测试报告。测试用例覆盖了数据的添加、编辑、删除以及搜索等操作,确保后台管理系统各项功能的正确性。
摘要由CSDN通过智能技术生成

页面封装篇
公共方法篇

用例生成

test
case
testLogin.py
登录功能测试用例

# -*-coding:utf-8-*-
import unittest
from test.pages.loginPage import LoginPage
class TestLogin(unittest.TestCase):
    """登录测试"""
    @classmethod
    def setUpClass(cls):
        cls.login = LoginPage()
    @classmethod
    def tearDownClass(cls):
        cls.login.quit_driver()
    def test_login01(self):
        """登录成功"""
        self.login.login()
if __name__ == '__main__':
    unittest.main()

test
case
testHome.py
主页页面测试用例

# -*-coding:utf-8-*-
import unittest
from test.pages.homePage import HomePage
class TestHome(unittest.TestCase):
    """测试主页功能"""
    @classmethod
    def setUpClass(cls):
        cls.home = HomePage()
        cls.home.login()
    @classmethod
    def tearDownClass(cls):
        cls.home.quit_driver()
    def setUp(self) -> None:
        pass
    def tearDown(self) -> None:
        pass
    def test_home01_add_data_cancel(self):
        """测试添加数据时取消"""
        self.home.add_data(code='302010', name="测试数据", sex="女", grader="六年级一班", button="取消")
    def test_home02_add_data_confirm(self):
        """测试添加数据成功"""
        self.home.add_data(code='302010', name="测试数据", sex="女", grader="六年级一班", button="确定")
    def test_home03_edit_data_cancel(self):
        """测试编辑数据时取消"""
        self.home.edit_data(header_text="姓 名", row_text="测试数据", code='302011', sex="男", button="取消")
    def test_home04_edit_data_confirm(self):
        """测试编辑数据成功"""
        self.home.edit_data(header_text="姓 名", row_text="测试数据", code='302011', sex="男", button="确定")
    def test_home05_search(self):
        """测试搜索功能"""
        self.home.search("测试数据")
    def test_home06_delete_data_cancel(self):
        """测试删除数据取消"""
        self.home.delete_data(header_text="姓 名", row_text="测试数据", button="取消")
    def test_home07_delete_data_confirm(self):
        """测试删除数据成功"""
        self.home.delete_data(header_text="姓 名", row_text="测试数据", button="确定")
if __name__ == '__main__':
    unittest.main()

test
case
testAbout.py
关于我们页面测试用例

# -*-coding:utf-8-*-
import unittest
from test.pages.aboutPage import AboutPage
class TestAbout(unittest.TestCase):
    """测试关于我们页面"""
    @classmethod
    def setUpClass(cls):
        cls.about = AboutPage()
        cls.about.login()
    @classmethod
    def tearDownClass(cls):
        cls.about.quit_driver()
    def setUp(self):
        pass
    def tearDown(self):
        pass
    def test_about01(self):
        """进入关于我们页面测试"""
        self.about.select_menu("关于我们")
        about = self.about.about_element()
        self.assertEqual("关于我们", about.text)
if __name__ == '__main__':
    unittest.main()

test
case
testLogout.py
退出登录测试用例

# -*-coding:utf-8-*-
import unittest
from test.pages.loginPage import LoginPage
class TestLogout(unittest.TestCase):
    """测试退出登录功能"""
    @classmethod
    def setUpClass(cls):
        cls.login = LoginPage()
        cls.login.login()
    @classmethod
    def tearDownClass(cls):
        cls.login.quit_driver()
    def test_logout01(self):
        """测试退出登录"""
        self.login.log_out()
if __name__ == '__main__':
    unittest.main()

测试用例执行

test
runner
main.py
获取所有用例、执行、输出报告

# -*-coding:utf-8-*-
import os, time
import unittest
from utils.HTMLTestRunner import HTMLTestRunner
class Main:
    def get_all_case(self):
        """导入所有的用例"""
        current_path = os.path.abspath(os.path.dirname(__file__))
        case_path = current_path + '/../case/'
        discover = unittest.defaultTestLoader.discover(case_path, pattern="test*.py")
        print(discover)
        return discover
    def set_report(self, all_case, report_path=None):
        """设置生成报告"""
        if report_path is None:
            current_path = os.path.abspath(os.path.dirname(__file__))
            report_path = current_path + '/../../report/'
        else:
            report_path = report_path
        # 获取当前时间
        now = time.strftime('%Y{y}%m{m}%d{d}%H{h}%M{M}%S{s}').format(y="年", m="月", d="日", h="时", M="分", s="秒")
        # 标题
        title = u"后台管理系统"
        # 设置报告存放路径和命名
        report_abspath = os.path.join(report_path, title + now + ".html")
        # 测试报告写入
        fp = open(report_abspath, "wb")
        runner = HTMLTestRunner(stream=fp, title=title)
        runner.run(all_case)
        fp.close()
        return
    def run_case(self, report_path=None):
        all_case = self.get_all_case()
        self.set_report(all_case, report_path)
if __name__ == '__main__':
    Main().run_case()

最后的入口文件
run.py

# -*-coding:utf-8-*-
import sys
sys.path.append('./../../')
from test.runner.main import Main
if __name__ == '__main__':
    Main().run_case()

最后执行效果
在这里插入图片描述
项目存放地址:
https://gitee.com/heyubo9541/AutoTestExample-Heyb-Project.git
前端地址待补充:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程简介:课程介绍你是否在寻找机会进入自动化测试领域?你是否渴望学习selenium webdriver + Java以及**的框架和技术进行web自动化测试?你是否感兴趣学习Selenium如何用在你现有的项目里的?这门课带你从Selenium搭建环境开始讲起,然后学习常用方法,单元测试,PO设计模式, jenkins等。我们假设学员没有任何自动化经验,来设计的这套课程。每个课题都从最基础的开始讲起。Selenium相关的该覆盖的课题都覆盖了。全程手写代码,逐步迭代,方便学习。例子都是来自于真实的web应用项目,帮助你理解不同的组件怎么用上自动化,这将展示给你一个行业层面的框架,增加自信心。这门课涵盖到基础到高级项目实战。您将会学到什么学完课程以后,你将了解Selenium Webdriver知识你将具备设计数据驱动框架、Page Object、等搭建自动化框架的能力用众多实例对Selenium现实场景应用进行深入理解了解单元测试, Jenkins, HTML报告,并发测试 你从网上随便选择一个网站,都可以尝试实现自动化,用所有可能的测试用例进行自动化测试将提高你的编码技能,以编写最优化的自动化测试用例代码你基本可以应对任何Selenium面试,并能从设计阶段开始领导整个Selenium自动化项目你将能够创建漂亮的报告来打动客户或领导更深入地理解自动化指南和代码质量标准会附带一个练习网站,可以用上所有可用的WebDriver功能,实现自动化【适合人群】软件手动测试人员想转为自动化测试的人员自动化软件测试人员想加强专业技能的刚毕业学生想从事软件行业QA 组长或项目经理【课程优势】学完课程以后,你将拥有完整的Selenium Webdriver知识,完整的项目实战【讲师介绍】资质介绍:12年以上开发、自动测试方面经验,其7年以上测试开发经验,现为技术架构师新书“Python3+Selenium3自动化测试项目实战”作者【课程咨询】作者联系QQ:2574674466 完善的学习文档            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值