fixture传参的request的使用
传入单个参数
import pytest
@pytest.fixture()
def login(request):
name = request.param
print(f‘账号是{name}‘)
return name
data = ["test1","test2"]
ids = [f‘login_test_name is {name}‘ for name in data]
@pytest.mark.parametrize(‘login‘,data,ids=ids,indirect=True)
def test_name(login):
print(f‘测试用例的登录账号是{login}‘)
注:
传入多个参数
import pytest
@pytest.fixture()
def logins(request):
param = request.param
print(f"账号是:{param[‘username‘]},密码是:{param[‘pwd‘]}")
return param
data = [
{"username": "name1", "pwd": "pwd1"},
{"username": "name2", "pwd": "pwd2"},
]
@pytest.mark.parametrize("logins", data, indirect=True)
def test_name_pwd(logins):
print(f"账号是:{logins[‘username‘]},密码是:{logins[‘pwd‘]}")
注:
如果需要传多个参数,需要通过字典去传
多个fixture(只加一个装饰器)----常用的
@pytest.fixture(scope=‘module‘)
def input_user(request):
user = request.param
print(f‘账号是{user}‘)
return user
@pytest.fixture(scope=‘module‘)
def input_pwd(request):
pwd = request.param
print(f‘密码是{pwd}‘)
return pwd
data = [
("name1", "pwd1"),
("name2", "pwd2")
]
@pytest.mark.parametrize("input_user,input_pwd", data, indirect=True)
def test_case1(input_user,input_pwd):
print(f‘账号是{input_user},密码是{input_pwd}‘)
多个fixture(叠加装饰器)
# 多个fixture
@pytest.fixture(scope="function")
def input_user(request):
user = request.param
print("登录账户:%s" % user)
return user
@pytest.fixture(scope="function")
def input_psw(request):
psw = request.param
print("登录密码:%s" % psw)
return psw
name = ["name1", "name2"]
pwd = ["pwd1", "pwd2"]
@pytest.mark.parametrize("input_user", name, indirect=True)
@pytest.mark.parametrize("input_psw", pwd, indirect=True)
def test_more_fixture(input_user, input_psw):
print("fixture返回的内容:", input_user, input_psw)
原文:https://www.cnblogs.com/blog-123/p/14902288.html