【发布时间】:2021-09-21 17:41:38
【问题描述】:
我正在尝试将三个不同的装置传递给我的 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 装饰器的一部分?
【问题讨论】: