前言:
笔者先试有用过unittest的前后置条件和pytest的前后置条件,觉得pytest的前后置条件比unittest的要简洁、方便很多。不过在使用unittest的前后置条件时,已经觉得在和每个测试用例里面重复写一样的前后置代码相比,unittest的前后置同样也简洁、方便很多。
unittest的前后置设置:分为类的前后置和每条测试用例的前后置
类的前置条件:
- setUpClass:主要用于启动浏览器驱动和设置浏览器窗口最大化,和加上打开的url,完成web自动化的前置
- tearDownClass:主要用于关闭浏览器回话
每个测试用例的前置条件:
- setUp\tearDown:可根据自身的业务逻辑去编写
1 #整个测试类的前置条件(主要用于启动浏览器驱动和设置浏览器窗口为最大化及打开url) 2 @classmethod 3 def setUpClass(cls): 4 # 启动浏览器驱动 5 cls.driver = webdriver.Chrome() 6 # 最大化显示窗口 7 cls.driver.maximize_window() 8 # 输入url打开 9 cls.driver.get(cd.login_url) 10 print("开始测试") 11 12 #每次执行用例的前置条件 13 def setUp(self): 14 self.lp = LoginPage(self.driver) 15 16 #每次执行用例的后置条件 17 def tearDown(self): 18 #每条用例执行后,刷新当前页面 19 self.driver.get(cd.login_url) 20 21 #整个测试类的后置条件(主要用于结束后,关闭浏览器回话) 22 @classmethod 23 def tearDownClass(cls): 24 cls.driver.quit() 25 print("测试结束")
pytest的前后置:fixture(主要讲fixture)
fixture的前后置写在conftest.py文件里面,conftest无需导入,放在测试类一层里面即可。在编写一个测试前后置方法,用yield来区分前后置。
@pytest.fixture(scope="function") def start_app(): driver = init_cps() # 真机确认访问权限 bl(driver).get_permission() # 滑屏操作 BP(driver).cross_screen(times=3, loc=ll.now_start)
# yield 之前的是前置条件,yield后面的为后置条件 yield driver