微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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("\n----开始执行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("\n----开始执行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("\n----开始执行module----")
    print("module:{}".format(request.module.__name__))
    print("-=-=启动浏览器-=-=")
    yield
    print("=-=-结束测试 end =-=-")

@pytest.fixture(scope="function",autouse=True)
def xixi(request):
    print("function:{} \n===回到首页===".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("\n----开始执行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("\n 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"])

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐