testdata 对象包含各公司的凭据。我想将此对象传递给pytest测试函数。在这种情况下,需要运行2次测试(公司1和2各一次)。
testdata = {
"Company1": {
"username": "user1",
"password": "pass!"
}, "Company2": {
"username": "user2",
"password": "pass!"
}
}
这是测试功能
def test_login():
# call login function by passing username and password
# Returns True if Success else False
assert login()
我尝试了 @ pytest.mark.parametrize ,但无法弄清楚如何传递dicts。
关于如何解决这个问题的任何指示都会非常有用。
答案 0 :(得分:0)
这就是 @ pytest.mark.parametrize 传递dicts和其他值类型的方法。
import pytest
@pytest.mark.parametrize(
"data, value",
[
({"Company1": {"username": "user1", "password": "pass!"},
"Company2": {"username": "user2", "password": "pass!"}}, "some value")
]
)
def test_example(data, value):
assert isinstance(data, dict)
assert value == "some value"
但是,如果您想将此字典拆分为两个以作为单独的测试运行,那么您需要执行以下操作:
import pytest
@pytest.mark.parametrize(
"data, value",
[
({"username": "user1", "password": "pass!"}, "some value"),
({"username": "user2", "password": "pass!"}, "some value")
]
)
def test_example(data, value):
assert isinstance(data, dict)
assert value == "some value"
答案 1 :(得分:0)
你也可以使用灯具