• pytest.fixture 详解


    fixture(scope='function',params=None,autouse=False,ids=None,name=None)

    scope:有四个级别参数"function"(默认),"class","module","session"

    params:一个可选的参数列表,它将导致多个参数调用fixture功能和所有测试使用它。

    autouse:如果True,则为所有测试激活fixture func可以看到它(自动为用例使用)。如果为False则显示需要参考来激活fixture

    ids:每个字符串id的列表,每个字符串对应于params这样他们就是测试ID的一部分。如果没有提供ID它们将从params自动生成

    name:fixture的名称。这默认为装饰函数的名称。如果fixture在定义它的统一模块中使用,夹具的功能名称将被请求夹具的功能arg遮蔽,解决这个问题的一种方法时将装饰函数命令"fixture_<fixturename>"然后使用"@pytest.fixture(name='<fixturename>')"。

    scope分为session、package、module、class、function级别,其中function也是包含测试类的测试方法的,package指在当前contest.py的package下只执行一次,如果想在某个package执行前后做操作,可以在那个package里加contest.py。yield就相当于执行测试函数的位置,详细解释如下:

    1.首先新建conftest.py

    import pytest
    
    
    @pytest.fixture(scope='session', autouse=True)
    def realize_session():
        print('session之前')
        yield
        print('session之后')
    
    
    @pytest.fixture(scope='package', autouse=True)
    def realize_package():
        print('package之前')
        yield
        print('package之后')
    
    
    @pytest.fixture(scope='module', autouse=True)
    def realize_module():
        print('module之前')
        yield
        print('module之后')
    
    
    @pytest.fixture(scope='class', autouse=True)
    def realize_class():
        print('class之前')
        yield
        print('class之后')
    
    
    @pytest.fixture(scope='function', autouse=True)
    def realize_function():
        print('function之前')
        yield
        print('function之后')
    
    
    @pytest.fixture(scope='function', name='aa')
    def realize_auto_flase():
        print('autouse=false-function之前')
        yield
        print('autouse=false-function之后')

    然后新建测试文件

    import pytest
    
    class Test_pytest_class():
    
        def test_buy_now(self):
            print('test_buy_now')
    
        def test_buy_now2(self):
            print('test_buy_now2')
    
        def test_add_cart(self):
            print('test_add_cart')
    
        #测试自定义调用fixture函数方式1
        @pytest.mark.usefixtures('aa')
        def test_learn(self):
            print('装饰器方式调用fixtures函数')
        #测试自定义调用fixture函数方式1
        def test_learn2(self,aa):
            print('传参方式调用fixtures函数')

    接下来看执行结果

    test_pytest_class.py::Test_pytest_class::test_buy_now session之前
    package之前
    module之前
    class之前
    function之前
    PASSED             [ 20%]test_buy_now
    function之后
    
    test_pytest_class.py::Test_pytest_class::test_buy_now2 function之前
    PASSED            [ 40%]test_buy_now2
    function之后
    
    test_pytest_class.py::Test_pytest_class::test_add_cart function之前
    PASSED            [ 60%]test_add_cart
    function之后
    
    test_pytest_class.py::Test_pytest_class::test_learn function之前
    autouse=false-function之前
    PASSED               [ 80%]装饰器方式调用fixtures函数
    autouse=false-function之后
    function之后
    
    test_pytest_class.py::Test_pytest_class::test_learn2 function之前
    autouse=false-function之前
    PASSED              [100%]传参方式调用fixtures函数
    autouse=false-function之后
    function之后
    class之后
    module之后
    package之后
    session之后
  • 相关阅读:
    OD: Memory Attach Technology
    Chrome: Shockwave Flash isn't responding
    OD: Memory Attach Technology
    OD: Heap Exploit : DWORD Shooting & Opcode Injecting
    OD: Heap in Windows 2K & XP SP1
    OD: Writing Small Shellcode
    OD: Shellcode Encoding
    Set Windows IP by Batch
    OD: Universal Shellcode
    XenServer 使用笔记
  • 原文地址:https://www.cnblogs.com/niunai/p/16529248.html
Copyright © 2020-2023  润新知