我想为数据调用使用一个灵活的装置,它可以在整个测试套件中重复使用。为此,我喜欢传递的不仅仅是参数。但是下面的代码片段通常只适用于一个参数:
@pytest.fixture
def getData(request):
"""Variable data query"""
data_detail = request.param
在 pytest documentation 中没有提示多个参数可能起作用,例如例如:
@pytest.fixture
def getData(request):
"""Variable data query"""
data_detail = request.param[0]
time_detail = request.param[1]
有人知道如何构建一个可以传递多个参数/参数的 pytest 固定装置吗?
答案 0 :(得分:0)
您可以使用元组或字典作为夹具参数:
@pytest.fixture
def tuple_params(request):
yield sum(request.param)
@pytest.mark.parametrize("tuple_params", [(1, 2, 3)], indirect=True)
def test_tuple_params(tuple_params):
print(tuple_params) # 6
@pytest.fixture
def dict_params(request):
yield f"{request.param['a']}_{request.param['b']}"
@pytest.mark.parametrize("dict_params", [{"a": "foo", "b": "bar"}],
indirect=True)
def test_dict_params(dict_params):
print(dict_params) # foo_bar
一般情况下,参数可以是任何对象,因此您可以随时将灯具参数放在合适的对象中。
使用元组或列表参数,您还可以像示例中一样访问每个索引的值。