如何将灯具传递给pytest.mark.parameterize?

时间:2017-12-09 06:29:33

标签: python pytest

我正在尝试将三个不同的灯具传递给我的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装饰者的一部分?

1 个答案:

答案 0 :(得分:6)

要将灯具作为参数化参数传递,请将它们作为字符串引用,并使用关键字参数[v3][1:v]overlay=(W-w)/2:H-h-10

然后使用参数名indirect=Truecredentials作为测试函数的参数。

return_code