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'])

执行结果:

  

 

posted @ 2022-01-11 17:05  漂泊的小虎  阅读(3611)  评论(0编辑  收藏  举报