Pytest - Fixture(8) - 作用域依赖关系

发布时间 2023-05-30 17:38:38作者: 粥雨

Pytest - 作用域依赖关系

  • 添加了 @pytest.fixture ,如果fixture还想依赖其他fixture,需要用函数传参的方式:

    • 当一个函数请求另一个函数时,首先执行另一个函数。

    • 如果函数 b 请求函数 a,函数 a 将首先执行,因为 b依赖于 a ,没有 a 就无法运行。

    • 即使 b 不需要 a的结果 ,它仍然可以请求 a 是否需要,确保在之后执行 a

    test_py.py

    import pytest
    
    @pytest.fixture()
    def a():
        print("\n第一个Fixture:a")
    
    @pytest.fixture()
    def b(a):
        print("第二个Fixture:b")
    
    @pytest.fixture()
    def c(a, b):
        print("第三个Fixture:c")
    
    @pytest.fixture()
    def d(a):
        print("第四个Fixture:d")
    
    @pytest.fixture()
    def z(d, c):
        print("第五个Fixture:z")
    
    # 测试用例只调用 函数z
    def test_s1(z):
        print("\n用例test_s1:Fixture 相互调用")
    
    if __name__ == '__main__':
        pytest.main(['-s', 'test_py.py'])
    

  • 执行依赖关系结果如图:

    • 单个fixture被多个fixture调用,只会执行一次;例如函数a 被函数b、c、d调用,但只被执行了一次;

    • 优先执行顺序靠前的fixture;例如def z(d, c):,优先执行函数 d

    • 优先执行最先被调用的fixture;例如函数a 为最先被 函数 d 调用的,函数d 为最先被函数 z 调用;

    image-20230306175754122