Pytest:将多个参数传递给夹具

时间:2021-06-14 15:00:17

标签: pytest

我想为数据调用使用一个灵活的装置,它可以在整个测试套件中重复使用。为此,我喜欢传递的不仅仅是参数。但是下面的代码片段通常只适用于一个参数:

@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 固定装置吗?

1 个答案:

答案 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

一般情况下,参数可以是任何对象,因此您可以随时将灯具参数放在合适的对象中。

使用元组或列表参数,您还可以像示例中一样访问每个索引的值。

相关问题