我正在尝试将三个不同的灯具传递给我的pytest.mark.parameterize
装饰器,如下所示:
@pytest.mark.parametrize("credentials, return_code", [
(user1, 200),
#(user2, 200),
#(user3, 401)
])
def test_login():
assert True
# Actual test uses response.return_code == return_code
但是,我收到的错误是:
NameError: name 'user1' is not defined
这不正确,我已在conftest.py
中定义了它:
user1_info = [('user1', 'password')]
@pytest.fixture(params=user1_info)
def user1(request):
return request.param
如果我将测试改为这样,那么灯具就可以工作:
def test_login(user1):
assert True
# Actual test uses response.return_code == return_code
问题在于,如果我这样做,我必须编写三个单独的测试,每个测试一个,每个status_code检查。如果我可以使用parameterize
,我可以使用一个函数并检查用户/预期的返回码。
如何利用我的灯具是pytest.mark.parameterize
装饰者的一部分?
答案 0 :(得分:6)
要将灯具作为参数化参数传递,请将它们作为字符串引用,并使用关键字参数[v3][1:v]overlay=(W-w)/2:H-h-10
。
然后使用参数名indirect=True
和credentials
作为测试函数的参数。
return_code