python单元测试框架pytest——fixture函数(类似unitest的setup和teardown)

pytest的setup和teardown函数(曾被一家云计算面试官问到过)。

pytest提供了fixture函数用以在测试执行前和执行后进行必要的准备和清理工作。与python自带的unitest测试框架中的setup、teardown类似,但是fixture函数对setup和teardown进行了很大的改进。

  • fixture函数可以使用在测试函数中,测试类中,测试文件中以及整个测试工程中。
  • fixture支持模块化,fixture可以相互嵌套
  • fixture支持参数化
  • fixture支持unittest类型的setup和teardown

1)模块级(setup_module/teardown_module)开始于模块始末:在所有测试用例开始执行setup_module和所有用例执行结束后执行teardown_module

2)类级(setup_class/teardown_class)开始于类的始末:在当前测试类的开始与结束执行

3)类里面的(setup/teardown)(运行在调用函数的前后)

4)功能级(setup_function/teardown_function)开始于功能函数始末(不在类中):用于每个测试用例开始执行时执行setup_function和在每个用例执行结束后执行teardown_function

5)方法级(setup_method/teardown_method)开始于方法始末(在类中):在每个测试方法开始与结束执行

 1 def setup_module(module):
 2     print("setup_module module:%s" % module.__name__)  3  4  5 def teardown_module(module):  6 print("teardown_module module:%s" % module.__name__)  7  8  9 def setup_function(function): 10 print("setup_function function:%s" % function.__name__) 11 12 13 def teardown_function(function): 14 print("teardown_function function:%s" % function.__name__) 15 16 17 def test_numbers_3_4(): 18 print('test_numbers_3_4 <============================ actual test code') 19 assert 3 * 4 == 12 20 21 22 def test_strings_a_3(): 23 print('test_strings_a_3 <============================ actual test code') 24 assert 'a' * 3 == 'aaa' 25 26 27 class TestUM: 28 def setup(self): 29 print("setup class:TestStuff") 30 31 def teardown(self): 32 print("teardown class:TestStuff") 33 34 def setup_class(cls): 35 print("setup_class class:%s" % cls.__name__) 36 37 def teardown_class(cls): 38 print("teardown_class class:%s" % cls.__name__) 39 40 def setup_method(self, method): 41 print("setup_method method:%s" % method.__name__) 42 43 def teardown_method(self, method): 44 print("teardown_method method:%s" % method.__name__) 45 46 def test_numbers_5_6(self): 47 print('test_numbers_5_6 <============================ actual test code') 48 assert 5 * 6 == 30 49 50 def test_strings_b_2(self): 51 print('test_strings_b_2 <============================ actual test code') 52 assert 'b' * 2 == 'bb'

好好观察一下运行结果:

setup_module      module:test_pytest_setup_teardown
setup_function    function:test_numbers_3_4
test_numbers_3_4  <============================ actual test code
.teardown_function function:test_numbers_3_4
setup_function    function:test_strings_a_3
test_strings_a_3  <============================ actual test code
.teardown_function function:test_strings_a_3
setup_class       class:TestUM
setup_method      method:test_numbers_5_6
setup             class:TestStuff
test_numbers_5_6  <============================ actual test code
.teardown          class:TestStuff
teardown_method   method:test_numbers_5_6
setup_method      method:test_strings_b_2
setup             class:TestStuff
test_strings_b_2  <============================ actual test code
.teardown          class:TestStuff
teardown_method   method:test_strings_b_2
teardown_class    class:TestUM
teardown_module   module:test_pytest_setup_teardown

 

转载于:https://www.cnblogs.com/ranxf/p/7766229.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值