Я пытаюсь использовать список значений одного прибора в качестве параметров другого.Вот мои настройки:
import pytest
d = {
"first": [1, 2, 3],
"second": [4, 5, 6]
}
@pytest.fixture(params=['first', 'second'])
def foo(request):
return d.get(request.param)
@pytest.fixture(params=[pytest.lazy_fixture('foo')])
def bar(request):
return request.param
def test_1(bar):
pass
Проблема в том, что bar()
всегда получают полный список как request.param
([1, 2, 3] не значения списка. Если в params
из bar()
Fixture отправляет данные напрямую, например:
@pytest.fixture(params=[1, 2, 3])
def bar(request):
return request.param
def test_1(bar):
pass
Тогда запрос аргумента будет работать правильно (тест запускается три раза). Та же ситуация, если я передаю аргументы params
не напрямую, а из любого метода бездекоратор прибора, то есть:
def some():
return [1, 2, 3]
@pytest.fixture(params=some())
def more(request):
return request.param
def test_2(more):
logging.error(more)
pass
Итак, мой вопрос, возможно ли получить данные из списка один за другим, а затем использовать их в моем тесте? Я пытаюсь «разобрать» список:
@pytest.fixture(params=[i for i in i pytest.lazy_fixture('foo')])
def bar(request):
return request.param
Но в этом случае я получаю TypeError: 'LazyFixture' object is not iterable