天河商城网站建设,普通话考试最后一题万能模板,东莞网站建设网站推广,写网站的教程PythonSeleniumUnittestDdtHTMLReport分布式数据驱动自动化测试框架结构
1、Business#xff1a;公共业务模块#xff0c;如登录模块#xff0c;可以把登录模块进行封装供调用
------login_business.py from Page_Object.Common_Page.login_page import Login_Page
from H…PythonSeleniumUnittestDdtHTMLReport分布式数据驱动自动化测试框架结构
1、Business公共业务模块如登录模块可以把登录模块进行封装供调用
------login_business.py from Page_Object.Common_Page.login_page import Login_Page
from HTMLReport import logger
import timedef login(driver, username, password):登录业务:param driver:浏览器驱动:param username:用户名:param password:密码:return:Nonelogger().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 loginddt.ddt
class Test_login(unittest.TestCase):def setUp(self):self.driver SeleniumBase().get_web_driver()def tearDown(self):SeleniumBase(self.driver).quit()ddt.unpackddt.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).textself.assertIn(立即登录, text, 登陆失败断言)elif assert_type 3:text self.driver.find_element_by_id(submit).textself.assertIn(立即登录, text, 登陆失败断言)elif assert_type 4:text self.driver.find_element_by_id(submit).textself.assertIn(立即登录, text, 登陆失败断言)else:logger().info(f未知断言类型{assert_type})self.assertTrue(False, 未知断言类型)
6、TestData测试数据对应用例的数据都是在这里去取
7、TestSuite测试套件以登录套件为例
---loginsuite.py
import unittestfrom TestCase.LoginCase import login_casedef return_suite():suiteunittest.TestSuite()loaderunittest.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整体运行文件
import unittest
from TestSuite.LinesSuite import lines_suite
from TestSuite.LinesSuite import itinerary_suiteimport HTMLReportsuite unittest.TestSuite()# suite.addTests(login_suite.return_suite())
suite.addTests(lines_suite.return_suite())
suite.addTests(itinerary_suite.return_suite())HTMLReport.TestRunner(report_file_nametest,titleWEB UI 自动化,description登陆,thread_count3
).run(suite)
10、整体框架结构图