Python+Selenium+Unittest+Ddt+HTMLReport分布式数据驱动自动化测试框架结构
程序员文章站
2022-12-23 09:28:54
1、Business:公共业务模块,如登录模块,可以把登录模块进行封装供调用 login_business.py Base_url.py:对应的url地址 2、Common:与业务无关的公共模块,如对Selenium的二次封装,方便后期的调用,还有一些工具类,如在读取数据时需要对读取文件进行封装 3 ......
1、business:公共业务模块,如登录模块,可以把登录模块进行封装供调用
------login_business.py
from page_object.common_page.login_page import login_page from htmlreport import logger import time def login(driver, username, password): """ 登录业务 :param driver:浏览器驱动 :param username:用户名 :param password:密码 :return:none """ logger().info(f"使用用户名:{username},密码:{password}进行登陆") login_page = login_page(driver) login_page.send_username(username) login_page.send_password(password) login_page.submit() time.sleep(2)
----base_url.py:对应的url地址
2、common:与业务无关的公共模块,如对selenium的二次封装,方便后期的调用,还有一些工具类,如在读取数据时需要对读取文件进行封装
3、pageobject:这个就应该不用多说了,页面元素的封装,这个根据自己公司系统的业务去做分层封装(不做过多解释)
4、report:测试报告
5、testcase:测试用例层,下面以logincase为例子
---logincase.py
import unittest from business.base_url import url_index import ddt from common.tools.read_txt import read_txt from htmlreport import logger from page_object.common_page.index_page import index_page from common.selenium_library import seleniumbase from business.login_business import login @ddt.ddt class test_login(unittest.testcase): def setup(self): self.driver = seleniumbase().get_web_driver() def teardown(self): seleniumbase(self.driver).quit() @ddt.unpack @ddt.data(*read_txt('testdata/login_user_password.txt')) def test_login(self, username, password, assert_type): se = seleniumbase(self.driver) se.get(url_index) login(self.driver, username, password) se.add_page_screen_shot() if assert_type == '1': logger().info("断言登陆成功") text = index_page(self.driver).login_success() self.assertin("测试", text, '登陆成功断言') elif assert_type == "2": text = self.driver.find_element_by_id("submit").text self.assertin("立即登录", text, '登陆失败断言') elif assert_type == "3": text = self.driver.find_element_by_id("submit").text self.assertin("立即登录", text, '登陆失败断言') elif assert_type == "4": text = self.driver.find_element_by_id("submit").text self.assertin("立即登录", text, '登陆失败断言') else: logger().info(f"未知断言类型{assert_type}") self.asserttrue(false, "未知断言类型")
6、testdata:测试数据,对应用例的数据都是在这里去取
7、testsuite:测试套件,以登录套件为例
---loginsuite.py
import unittest from testcase.logincase import login_case def return_suite(): suite=unittest.testsuite() loader=unittest.testloader() suite.addtests(loader.loadtestsfromtestcase(login_case.test_login)) return suite
8、browser.ini:浏览器配置文件
[local] local_browser = false wait_time = 10 [browser] name = chrome ;name = firefox ;name = ie window_width = window_height = [grid] command_executor = http://127.0.0.1:4444/wd/hub headless = false proxy =
9、run.py:整体运行文件
上一篇: jQuery(六)、事件
下一篇: Laravel安装教程
推荐阅读
-
Python+Selenium+Unittest+Ddt+HTMLReport分布式数据驱动自动化测试框架结构
-
利用Python如何实现数据驱动的接口自动化测试
-
资深程序员用Python实现数据驱动的接口自动化测试!
-
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
-
python自动化测试之DDT数据驱动
-
Python+Selenium+Unittest+Ddt+HTMLReport分布式数据驱动自动化测试框架结构
-
资深程序员用Python实现数据驱动的接口自动化测试!
-
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
-
python自动化测试之DDT数据驱动