zoukankan      html  css  js  c++  java
  • pytest 15 fixture之autouse=True

    前言

    平常写自动化用例会写一些前置的fixture操作,用例需要用到就直接传该函数的参数名称就行了。当用例很多的时候,每次都传这个参数,会比较麻烦。
    fixture里面有个参数autouse,默认是Fasle没开启的,可以设置为True开启自动使用fixture功能,这样用例就不用每次都去传参了

    调用fixture三种方法

      • 1.函数或类里面方法直接传fixture的函数参数名称

      • 2.使用装饰器@pytest.mark.usefixtures()修饰

      • 3.autouse=True自动使用

    用例传fixture参数

    方法一:先定义start功能,用例全部传start参数,调用该功能

    #!/usr/bin/env/python
    # -*-coding:utf-8-*-
    
    import pytest
    
    @pytest.fixture(scope="function")
    def start(request):
        print('
    -----开始执行function----')
    
    def test_a(start):
        print("-------用例a执行-------")
    
    class Test_aaa():
    
        def test_01(self, start):
            print('-----------用例01--------------')
    
        def test_02(self, start):
            print('-----------用例02------------')

    运行结果:

    ============================= test session starts ==============================
    platform darwin -- Python 3.7.0, pytest-3.9.1, py-1.7.0, pluggy-0.8.0
    rootdir: /Users/newcomer/gitByMyself, inifile:
    plugins: datadir-1.2.1, allure-adaptor-1.7.10collected 3 items
    
    python_work_apple/pytest_package/fixtureDemo/test_01.py 
    -----开始执行function----
    .-------用例a执行-------
    
    -----开始执行function----
    .-----------用例01--------------
    
    -----开始执行function----
    .-----------用例02------------
                  [100%]
    
    =========================== 3 passed in 0.02 seconds ===========================

    装饰器usefixtures

    方法二:使用装饰器@pytest.mark.usefixtures()修饰需要运行的用例

    #!/usr/bin/env/python
    # -*-coding:utf-8-*-
    import pytest
    
    @pytest.fixture(scope="function")
    def start(request):
        print('
    -----开始执行function----')
    
    @pytest.mark.usefixtures("start")
    def test_a():
        print("-------用例a执行-------")
    
    @pytest.mark.usefixtures("start")
    class Test_aaa():
    
        def test_01(self):
            print('-----------用例01--------------')
    
        def test_02(self):
            print('-----------用例02------------')

    运行结果:

    ============================= test session starts ==============================
    platform darwin -- Python 3.7.0, pytest-3.9.1, py-1.7.0, pluggy-0.8.0
    rootdir: /Users/newcomer/gitByMyself, inifile:
    plugins: datadir-1.2.1, allure-adaptor-1.7.10collected 3 items
    
    python_work_apple/pytest_package/fixtureDemo/test_02.py 
    -----开始执行function----
    .-------用例a执行-------
    
    -----开始执行function----
    .-----------用例01--------------
    
    -----开始执行function----
    .-----------用例02------------
                  [100%]
    
    =========================== 3 passed in 0.02 seconds ===========================
    Process finished with exit code 0

    设置autouse=True

    方法三、autouse设置为True,自动调用fixture功能

    • start设置scope为module级别,在当前.py用例模块只执行一次,autouse=True自动使用

    • open_home设置scope为function级别,每个用例前都调用一次,自动使用

    #!/usr/bin/env/python
    # -*-coding:utf-8-*-
    import pytest
    
    @pytest.fixture(scope="module", autouse=True)
    def start(request):
        print('
    -----开始执行moule----')
        print('module      : %s' % request.module.__name__)
        print('----------启动浏览器---------')
        yield
        print("------------结束测试 end!-----------")
    
    @pytest.fixture(scope="function", autouse=True)
    def open_home(request):
        print("function:%s 
    --------回到首页--------" % request.function.__name__)
    
    def test_01():
        print('-----------用例01--------------
    ')
    
    def test_02():
        print('-----------用例02------------
    ')

    运行结果:

    ============================= test session starts ==============================
    platform darwin -- Python 3.7.0, pytest-3.9.1, py-1.7.0, pluggy-0.8.0
    rootdir: /Users/newcomer/gitByMyself, inifile:
    plugins: datadir-1.2.1, allure-adaptor-1.7.10collected 2 items
    
    python_work_apple/pytest_package/fixtureDemo/test_03.py 
    -----开始执行moule----
    module      : test_03
    ----------启动浏览器---------
    function:test_01 
    --------回到首页--------
    .-----------用例01--------------
    
    function:test_02 
    --------回到首页--------
    .-----------用例02------------
    
    ------------结束测试 end!-----------
                   [100%]
    
    =========================== 2 passed in 0.02 seconds ===========================

     写在class里面也是一样的

    #!/usr/bin/env/python
    # -*-coding:utf-8-*-
    import pytest
    
    @pytest.fixture(scope="module", autouse=True)
    def start(request):
        print('
    -----开始执行moule----')
        print('module      : %s' % request.module.__name__)
        print('----------启动浏览器---------')
        yield
        print("------------结束测试 end!-----------")
    
    class Test_aaa():
        @pytest.fixture(scope="function", autouse=True)
        def open_home(self, request):
            print("function:%s 
    --------回到首页--------" % request.function.__name__)
    
        def test_01(self):
            print('-----------用例01--------------
    ')
    
        def test_02(self):
            print('-----------用例02------------
    ')

    运行结果:

    ============================= test session starts ==============================
    platform darwin -- Python 3.7.0, pytest-3.9.1, py-1.7.0, pluggy-0.8.0
    rootdir: /Users/newcomer/gitByMyself, inifile:
    plugins: datadir-1.2.1, allure-adaptor-1.7.10collected 2 items
    
    python_work_apple/pytest_package/fixtureDemo/test_04.py 
    -----开始执行moule----
    module      : test_04
    ----------启动浏览器---------
    function:test_01 
    --------回到首页--------
    .-----------用例01--------------
    
    function:test_02 
    --------回到首页--------
    .-----------用例02------------
    
    ------------结束测试 end!-----------
                   [100%]
    
    =========================== 2 passed in 0.02 seconds ===========================
    Process finished with exit code 0
  • 相关阅读:
    RK 清理后台所有历史App任务
    RK onConfigurationChanged ConfigChanges 设备状态的改变
    RK audio 拨号同时输出Speaker和USB音频
    RK 微信视频通话预览倒立
    Unity 笔记
    C# 泛型约束为枚举
    Unity Editor 扩展PropertyDrawer (属性的 Inspector )
    Unity Editor 笔记
    Unity 反转法线,在 Hierarchy 视图对象的快捷菜单中增加 Flip Mesh Normals(反转网格法线)项
    Blender 2.9 骨骼
  • 原文地址:https://www.cnblogs.com/peiminer/p/9946607.html
Copyright © 2011-2022 走看看