4.pytest中固定装置setup和teardown
pytest提供了不同级别的setup和teardown,来完成测试中前置和后置的操作。
1.函数级别:setup_function/teardown_function
def test_source(): print('##### 打印功能 #####') def setup_function(): print('----- 开始打印 -----') def teardown_function(): print('----- 结束打印 -----')
2.类级别:setup_class/teardown_class
def add(a,b): return a+b #注意setup_class 和teardown_class 必须写在类中 class Test_add(): def setup_class(self): print('----- 计算开始 -----') def teardown_class(self): print('----- 计算结束 -----') def test_1(self): print('----- 正在第一次计算 -----') assert add(1,2)==3 def test_2(self): print('----- 正在第二次计算 -----') assert add(2,3)==5
3.方法级别:setup_method/teardown_method
def add(a,b): return a+b class Test_add(): def setup_class(self): print('我是类级别的setup') def teardown_class(self): print('我是类级别的teardown') # 注意:setup_method和teardown_method 必须放在类中 def setup_method(self): print('我是方法级别的setup') def teardown_method(self): print('我是方法级别的teardown') def test_1(self): print('----- 正在第一次计算 -----') assert add(1,2)==3 def test_2(self): print('----- 正在第二次计算 -----') assert add(2,3)==5
4.模块级别:setup_module/teardown_module
def test_source(): print('##### 打印功能 #####') def setup_function(): print('----- 开始打印 -----') def teardown_function(): print('----- 结束打印 -----') def setup_module(): print('我是模块级别的setup') def teardown_module(): print('我是模块级别的module') def add(a,b): return a+b class Test_add(): def setup_class(self): print('我是类级别的setup') def teardown_class(self): print('我是类级别的teardown') def setup_method(self): print('我是方法级别的setup') def teardown_method(self): print('我是方法级别的teardown') def test_1(self): print('----- 正在第一次计算 -----') assert add(1,2)==3 def test_2(self): print('----- 正在第二次计算 -----') assert add(2,3)==5
5.单独的setup和teardown
使用单独的setup和teardown其作用和setup_function/teardown_function/setup_method/teardown_method 一样
总结上述各级别的setup和teardown如果其中setup出现异常则不会执行teardown的操作