• Pytest_fixture装饰器、调用fixture的三种方法、usefixtures与传fixture区别、fixture自动使用autouse=True


    1、调用fixture方法1:函数或类的方法直接传fixture的函数参数名称

    import pytest
    
    @pytest.fixture(scope="function")  # 此装饰器相当于 setup_function 的内容
    def some_data():
        print("开始")
        # yield   # 表示此代码之后的语句视为teardown_function的内容
        print("结束")
    
    def test_some_data(some_data):
        print("test")
    
    if __name__ == '__main__':
        pytest.main(['001_Pytest_fixture装饰器_fixtrue_参数化演示_usefixtures与传fixture的区别.py', '-s'])
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    2、调用fixture方法2:使用装饰器@pytest.mark.usefixtures()修饰需要运行的用例。

    import pytest
    
    @pytest.fixture()
    def test1():
        print('\n开始执行用例1')
    
    @pytest.mark.usefixtures('test1')
    def test_2():
        print('\n开始执行用例2')
    
    if __name__ == '__main__':
        pytest.main(['test.py', '-s'])
    # 输出:
    # 开始执行用例1
    # 开始执行用例2.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    3、调用fixture方法3:叠加usefixtures。

    # 如果一个方法或class用例想要同时调用多个fixture,可以使用@pytest.mark.usefixture()进行叠加。
    # 注意:叠加顺序,先执行的放底层,后执行的放上层。
    import pytest
    
    @pytest.fixture()
    def test1():
        print('开始执行用例1')
    
    @pytest.fixture()
    def test2():
        print('开始执行用例2')
    
    @pytest.mark.usefixtures('test1')
    @pytest.mark.usefixtures('test2')
    def test_3():
        print('开始执行用例3')
    
    if __name__ == '__main__':
        pytest.main(['test.py', '-s'])
    # 输出:
    # 开始执行用例2
    # 开始执行用例1
    # 开始执行用例3.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    4、usefixtures与传fixture区别

    1、如果fixture有返回值,那么usefixture就无法获取到返回值,这个是装饰器usefixture与用例直接传fixture参数的区别。
    2、当fixture需要用到return出来的参数时,只能把参数名称直接当参数传入。
    3、当不需要用到return出来的参数时,两种方式都可以。
    
    • 1
    • 2
    • 3

    5、fixture自动使用autouse=True

    1、当用例很多的时候,每次都传这个参数,会很麻烦。
    2、fixture里面有个参数autouse,默认是False没开启的,可以设置为True开启自动使用fixture功能,这样用例就不用每次都去传参了。
    
    
    • 1
    • 2
    • 3
  • 相关阅读:
    203. 数据库操作
    Github主页无法打开和Assets转圈
    操作系统MIT6.S081:P8->Multiprocessors and locking
    3D Instances as 1D Kernels
    Nginx查找耗时的接口
    金九失足,10月喜提“Java高分指南”,11月冲击大厂
    Linux操作系统之操作系统概论以及操作系统设计思想
    ubuntu20.04挂载拓展盘保姆级流程
    最佳生物信息工作环境(2023年11月更新版)
    【Java面试】这么回答提升30%的面试通过率,ThreadLocal出现内存泄露吗?
  • 原文地址:https://blog.csdn.net/weixin_44801980/article/details/125505685