indirect=True vs indirect=False in @pytest.mark.parametrize()?

With indirect=True you can parametrize your fixture, False – default value. Example:

import pytest

def fixture_name(request):
    return request.param

@pytest.mark.parametrize('fixture_name', ['foo', 'bar'], indirect=True)
def test_indirect(fixture_name):
    assert fixture_name == 'baz'

So this example generates two tests. First one gets from fixture_name value foo, because this fixture for this test runs with parametization. Second test gets bar value. And each tests will fail, because of assert checking for baz.

Leave a Comment