pytest(五)用例传fixture参数
fixture 里面有个参数autouse,默认是False没开启的,可以设置为True开启自动使用fixture功能,这样用例就不用每次都去传参了
调用fixture三种方法:
- 函数或类里面方法直接传fixture的函数参数名称
- 使用装饰器@pytest.mark.usefixtures()修饰
- auto=True自动使用
用例传fixture参数
方法一:先定义start功能,用例全部传start参数,调用该功能
import time
import pytest
@pytest.fixture(scope="function")
def start(request):
print('\n---------开始执行function-------')
def test_a(start):
print("---------用例a执行-------“)
class Test_aa():
def test_1(self, start):
print('---------用例1------------‘')
def test_2(self, start):
print('---------用例2-------")
if __name__=="__main__"
pytest.main(["-s", "test_000.py"])
方法二:使用装饰器@pytest.mark.usefixtures()修饰需要运行的用例
import time
import pytest
@pytest.fixture(scope="function")
def start(request):
print('\n---------开始执行function-------')
@pytest.mark.usefixtures("start")
def test_a(start):
print("---------用例a执行-------“)
@pytest.mark.usefixtures("start")
class Test_aa():
def test_1(self, start):
print('---------用例1------------‘')
def test_2(self, start):
print('---------用例2-------")
if __name__=="__main__"
pytest.main(["-s", "test_001.py"])
方法三:设置autouse=True auto 设置为True 自动调用fixture功能
- start设置scope为module级别,在当前.py用例模块只执行一次,autouse =True自动使用
- open_home设置scope 为function级别,每个用例前都调用一次,自动使用
import time
import pytest
@pytest.fixture(scope="module",autouse = True)
def start(request):
print('\n---------开始执行module-------')
print('module:%s' % request.module.__name__)
print('-------启动浏览器------')
yield
print("--------结束测试end!-----------")
@pytest.fixture(scope="function",autouse = True)
def open_home(request):
print('function:%s \n----------回到首页--------' % request.function.__name__)
@pytest.mark.usefixtures("start")
class Test_aa():
def test_1(self, start):
print('---------用例1------------‘')
def test_2(self, start):
print('---------用例2-------")
if __name__=="__main__"
pytest.main(["-s", "test_002.py"])
浙公网安备 33010602011771号