【pytest-5】setup和teardown的使用
前言
学过unittest的知道有前置setup和后置teardown,在每次用例的执行前和结束后都执行一次,同理,还有setupClass和teardownClass
pytest也有,下面我们来一起看下怎么用
运行级别
- 模块级:setup_module/teardown_module——>开始于模块始末,全局的
- 函数级:setup_function/teardown_function——>用于函数用例(不在类里)
- 类级别:setup_class/teardown_class——>用于类中前后运行一次(在类里)
- 方法级:setup_method/teardown_method——>开始于方法始末(在类中)
- 类里面:setup/teardown——>运行在调用方法的前后
模块和函数
#encoding:utf-8 #@Time:2020/11/26 22:33 #@Author:sunny #setup_module 和teardown_module import pytest def setup_module(): print("setup_module:整个.py模块用例开始前只执行这一次打开浏览器") def teardown_module(): print("teardown_module:setup_module:整个.py模块结束只执行这一次关闭浏览器") def setup_function(): print("setup_function:每个用例执行前都会执行") def teardown_function(): print("teardown_function:每个用例结束前会执行") def test_one(): print("我是第一个测试用例") x="this" assert 'i' in x def test_two(): print("我是第二个测试用例") a=9 b=5+4 assert b==a if __name__ == '__main__':
pytest.main(["-s", "test_a.py"])
运行结果:
============================= test session starts =============================collected 2 items test_b.py
setup_module:整个.py模块用例开始前只执行这一次打开浏览器 setup_function:每个用例执行前都会执行 .我是第一个测试用例 teardown_function:每个用例结束前会执行 setup_function:每个用例执行前都会执行 .我是第二个测试用例 teardown_function:每个用例结束前会执行 teardown_module:整个.py模块结束只执行这一次关闭浏览器 [100%] ========================== 2 passed in 0.03 seconds =========================== Process finished with exit code 0
从运行结果可以看到setup_module和teardown_module只执行了一次
类和方法
import pytest class TestCase(): def setup(self): print("setup:每个用例开始前执行")
def teardown(self): print("teardown:每个用例结束后执行")
def setup_class(self): print("setup_class:所有用例执行之前")
def teardown_class(self): print("teardown_class:所有用例执行结束后")
def setup_method(self): print("setup_method:每个用例开始前执行")
def teardown_method(self): print("teardown_method:每个用例结束后执行") def test_one(self): print("----------我是第一个测试用例") x = "this" assert 'i' in x def test_two(self): print("我是第二个测试用例--------------") a = 9 b = 5 + 4 assert b == a if __name__ == '__main__': pytest.main(['-s','test_b.py'] )
运行结果:
============================= test session starts =============================collected 2 items test_b.py setup_class:所有用例执行之前 setup_method:每个用例开始前执行 setup:每个用例开始前执行 .----------我是第一个测试用例 teardown:每个用例结束后执行 teardown_method:每个用例结束后执行 setup_method:每个用例开始前执行 setup:每个用例开始前执行 .我是第二个测试用例-------------- teardown:每个用例结束后执行 teardown_method:每个用例结束后执行 teardown_class:所有用例执行结束后 [100%] ========================== 2 passed in 0.03 seconds =========================== Process finished with exit code 0
从运行结果来看的顺序是:
setup_class》setup_method》setup》用例》teardown》teardown_method》teardown_class
备注:各个级别可以随意组合
善于跌倒仍喜爱奔跑~

浙公网安备 33010602011771号