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"])
标签:__,用例,--,fixture,autouse,test,pytest,print,def 来源: https://www.cnblogs.com/canglongdao/p/13404923.html