2016-08-24 2 views
0

, пытающегося использовать функцию pytest, чтобы передать params = [] декоратору декоратора, ожидая, что он будет вызван индивидуально для каждого из переданных значений. как пары я хочу передать другую арматуру (только демо-код):Прохождение fixture в качестве еще одного параметра декоратора 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() 

есть способ сделать это?

ответ

0

один из возможных решений, я только что нашел:

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

не очень просто, хотя ...