• python-pytest学习(十三)-fixture之autouse=True


    一、前言

      平常写自动化会写一些前置fixture操作,用例需要用到直接传该函数的参数名称就行了。当用例很多的时候,每次都传这个参数,会比较麻烦。

      fixture里面有个参数autouse,默认是Fasle没开启的,可以设置为True开启自动使用fixture功能,这样用例就不用每次都去传参了。

      调用fixture三种方法:

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

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

      (3)autouse = True自动使用

    二、用例传fixture参数

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

    import time
    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-----------')
    
    if __name__=="__main__":
        pytest.main(["-s","test_06.py"])

    运行结果:

    三、装饰器usefixtures

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

    import time
    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_aa():
        def test_01(self):
            print('-----------用例01-------------')
    
        def test_02(self):
            print('------------用例02------------')
    
    if __name__=="__main__":
        pytest.main(["-s","test_07.py"])

    运行结果:

     四、设置autouse=True

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

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

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

    import time
    import pytest
    
    @pytest.fixture(scope="module",autouse=True)
    def start(request):
        print('
    ------------开始执行module----------')
        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('-----------用例2-------------')
    
    if __name__=="__main__":
        pytest.main(["-s","test_08.py"])

    运行结果:

    上面是函数去实现用例,写进class里面也是一样可以的。

    import time
    import pytest
    
    @pytest.fixture(scope="module",autouse=True)
    def start(request):
        print('
    ------------开始执行module----------')
        print('module       :%s'%request.module.__name__)
        print('----------启动浏览器------------')
        yield
        print("----------结束测试 end!-----------")
    
    class Test_aaa():
        @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('-----------用例2-------------')
    
    if __name__=="__main__":
        pytest.main(["-s","test_08.py"])

    参考文章:https://www.jianshu.com/p/2bd4eb67b75d

  • 相关阅读:
    【转载】【贪心】各种覆盖问题
    【转载】【知识点总结】NOIP前夕 2014.11.4
    最大子图形问题
    小知识
    Tyvj——P1864 [Poetize I]守卫者的挑战
    Tyvj——P1952 Easy
    BZOJ——2134: 单选错位
    BZOJ——1620: [Usaco2008 Nov]Time Management 时间管理
    BZOJ——1622: [Usaco2008 Open]Word Power 名字的能量
    洛谷 U3357 C2-走楼梯
  • 原文地址:https://www.cnblogs.com/zhaocbbb/p/12851844.html
Copyright © 2020-2023  润新知