pytest 框架结构
执行用例前后会执行setup, teardown 来完成用例的前置和后置条件。pytest框架中使用setup, teardown 更灵活,按照用例运行级别可以分为以下几类:
- 模块级(setup_module/teardown_module)在模块始末调用
- 函数级(setup_function/teardown_function)在函数始末调用(在类外部)
- 类级(setup_class/teardown_class)在类始末调用(在类中)
- 方法级(setup_method/teardown_method)在方法始末调用(在类中)
- 方法级(setup/teardown)在方法始末调用(在类中,方法细化级别)
调用顺序
setup_module>setup_class>setup_method>setup>teardown>teardown_method>teardown_class>teardown_module
图解:
验证上面的执行顺序,代码如下:
1 def setup_module(): 2 print('开始 module') 3 4 5 def teardown_module(): 6 print('结束 module') 7 8 9 def setup_function(): 10 print('开始 function') 11 12 13 def teardown_function(): 14 print('结束 function') 15 16 17 def test_one(): 18 print('这是one') 19 20 21 class TestDemo: 22 23 def setup_class(self): 24 print('开始 class') 25 26 def teardown_class(self): 27 print('结束 class') 28 29 def setup_method(self): 30 print('开始 method') 31 32 def teardown_method(self): 33 print('结束 method') 34 35 def setup(self): 36 print('开始 setup') 37 38 def teardown(self): 39 print('结束 setup') 40 41 def test_two(self): 42 print('这是two') 43 assert 1 == 1 44 45 def test_three(self): 46 print('这是three') 47 assert 1 > 0
执行结果:
1 test_demo2.py 开始 module 2 开始 function 3 这是one 4 .结束 function 5 开始 class 6 开始 method 7 开始 setup 8 这是two 9 .结束 setup 10 结束 method 11 开始 method 12 开始 setup 13 这是three 14 .结束 setup 15 结束 method 16 结束 class 17 结束 module
setup_module和teardown_module在整个模块中只执行一次, setup_class和teardown_class在类里面只执行一次,setup_method/teardown_method和setup/teardown 在每个方法前后都会被调用。一般用的最多的是方法级别和类级别。
写在最后的话:小白同学愿意和大家一起成长~