I would like to pass @pytest.mark.parametrize
not particular values but fixtures. Like so.
Given a conftest with:
@pytest.fixture
def name1():
return 'foo'
@pytest.fixture
def name2():
return 'bar'
within my test.py this works of course:
@pytest.mark.parametrize('name', ['foo', 'bar', 'baz'])
def test_name(name):
print(name)
This does not:
@pytest.mark.parametrize('name', [name1, name2])
def test_name(name):
print(name)
I am aware that in this trivial case I could just create one name fixture and parametrize the fixture instead, but there are cases were this is not deireable.
One way around this that I found is with pytest_factoryboy
's LazyFixture
.
However, I often fail to access the lazyfixtures attributes within my test.
@pytest.mark.parametrize('name', [name1(), name2()]) def test_name(name): print(name)
. Of course this is not exactly what you want because in this case fixtures are used as it were standard functions, not fixtures. – Barbiturism