zoukankan      html  css  js  c++  java
  • pytest(十六)--fixture值autouse=True

    前言

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

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

    调用fixture三种方法

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

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

      3.autouse=True自动使用

    用例传fixture参数

    方法一:先定义go功能(go可以改为任意名字),用例全部传go参数,调用该功能

    #test_fix1.py
    import pytest
    @pytest.fixture(scope="function")
    def go(request):
        print("
    ----开始执行function----")
    def test_1(go):
        print("---用例1执行---")
    class Test_aaa():
        def test_2(self,go):
            print("-----用例2----")
        def test_3(self,go):
            print("---用例3---")
    if __name__=="__main__":
        pytest.main(["-s","test_fix1.py"])
    

     装饰器usefixtures

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

    #test_fix1.py
    import pytest
    @pytest.fixture(scope="function")
    def go(request):
        print("
    ----开始执行function----")
    
    @pytest.mark.usefixtures("go")
    def test_1():
        print("---用例1执行---")
    
    @pytest.mark.usefixtures("go")
    class Test_aaa():
        def test_2(self):
            print("-----用例2----")
        def test_3(self):
            print("---用例3---")
    if __name__=="__main__":
        pytest.main(["-s","test_fix1.py"])
    

     

     设置autouse=True

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

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

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

    #test_fix1.py
    import pytest
    @pytest.fixture(scope="module",autouse=True)
    def go(request):
        print("
    ----开始执行module----")
        print("module:{}".format(request.module.__name__))
        print("-=-=启动浏览器-=-=")
        yield
        print("=-=-结束测试 end =-=-")
    
    @pytest.fixture(scope="function",autouse=True)
    def xixi(request):
        print("function:{} 
    ===回到首页===".format(request.function.__name__))
    
    def test_1():
        print("---用例1执行---")
    
    class Test_aaa():
        def test_2(self):
            print("-----用例2----")
        def test_3(self):
            print("---用例3---")
    if __name__=="__main__":
        pytest.main(["-s","test_fix1.py"]) 

     运行结果

    上面函数写到class里,作用域就只有类里的方法了。

    #test_fix1.py
    import pytest
    @pytest.fixture(scope="module",autouse=True)
    def go(request):
        print("
    ----开始执行module----")
        print("module:{}".format(request.module.__name__))
        print("-=-=启动浏览器-=-=")
        yield
        print("=-=-结束测试 end =-=-")
    
    def test_1():
        print("---用例1执行---")
    
    class Test_aaa():
        @pytest.fixture(scope="function", autouse=True)
        def xixi(self,request):
            print("
     function:{} ===回到首页===".format(request.function.__name__))
    
        def test_2(self):
            print("-----用例2----")
        def test_3(self):
            print("---用例3---")
    if __name__=="__main__":
        pytest.main(["-s","test_fix1.py"])
    

    越努力,越幸运!!! good good study,day day up!!!
  • 相关阅读:
    利用ArcToolBox ModelBuider进行数据处理
    【转】C#中通过API调用获取文件图标
    【转】利用C#实现标注式消息提示窗口
    【转】在C#2005中创建快捷方式
    爱一个人好难
    【转】C#获取文件与文件夹默认图标
    【转】远程教育理论中几个基本概念的探讨2
    【转】C#中Bitmap类实现对图像操作的一些方法
    【转】C#启动外部程序
    WshShortcut 对象说明
  • 原文地址:https://www.cnblogs.com/canglongdao/p/13404923.html
Copyright © 2011-2022 走看看