前言:

笔者先试有用过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
01-19 11:27