pytest中setup_class()使用实例
一、使用场景:
接口A:查询商品列表,商品列表中的商品返回的有商品id;
接口B: 根据看接口A返回的商品id,进入商品详情中,对商品进行编辑并保存。
二、设计预期:
1、将接口A的操作放在前置(setup_class(),因为这个接口只有一个地方使用一次且没有更新,所以我用的是class级别的前置)中,接口B是被测对象,即为测试案例。即,在对接口B进行测试的时候需要用到前置中接口A返回的商品Id数据
2、需要满足扩展性,万一后边再有需要,可以直接拿来用,且可以不修改原有部分
3、操作简单,不影响现有案例执行
三、使用解释:
因为setup_class()是一个类函数,接受的参数是一个类对象,而每个测试用例是一个实列函数,接受实列对象,想要保证每个测试用例都能接受着这个一次性操作运行,就需要setup_class中使用的实列对象和每一个测试用例中使用的实列对象相同。
四、实现过程:
五、下一步改造想法:
将body数据存入数据库,寻找一种合理合适的方式将的前置中获取的数据与测试案例中的body数据关联起来并完成传参。
六、知识扩展:
汇总关于前/后置使用
import pytest def setup_function(): print() print("setup_function:class外的每个用例前开始执行") def teardown_function(): print("teardown_function:class外的每个个用例后开始执行") def setup_module(): """ 一个module级别的setup,它会在本module(test_fixt_class.py)里 所有test执行之前,被调用一次。 注意,它是直接定义为一个module里的函数 """ print("-------------- setup before module --------------") def teardown_module(): """ 这是一个module级别的teardown,它会在本module(test_fixt_class.py)里 所有test执行完成之后,被调用一次。 注意,它是直接定义为一个module里的函数""" print("-------------- teardown after module --------------") def test_add(): print("正在执行test_fire") a = "hello" b = "hello word" assert a in b 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("正在执行----test_one") x = "this" assert 'h' in x def test_three(self): print("正在执行test_two") a = "hello" b = "hello word" assert a in b def add(self,a, b): print("这是加减法") return a + b if __name__ == '__main__': pytest.main(['-s', 'test_fixt_class'])
执行结果:
学如逆海行舟,不进则退。