将夹具作为另一个夹具的装饰器参数传递

时间:2016-08-24 08:56:14

标签: pytest

尝试使用pytest的功能将params = []传递给fixture的装饰器,期望为每个传递的值单独调用它。作为一个参数,我想传递另一个灯具(只是一个演示代码):

import pytest

@pytest.fixture
def rates():
    return (1.12, 1.15, 1.37)

@pytest.fixture
def expires():
    return (102, 105, 107)

@pytest.fixture(params=[rates, expires])
def data(request):
    return request.param

def test_vol(data):
    assert len(data) == 3

这只是抱怨:

TypeError: object of type 'function' has no len()

有办法吗?

1 个答案:

答案 0 :(得分:0)

我刚发现的一种可能的解决方案:

@pytest.fixture(params=[rates, expires])
def data(request):
    return request.getfuncargvalue(request.param.__name__)

虽然不是很简单......