0
0
PyTesttesting~5 mins

Parametrize with indirect fixtures in PyTest - Cheat Sheet & Quick Revision

Choose your learning style9 modes available
Recall & Review
beginner
What does 'indirect=True' do in pytest's parametrize decorator?
It tells pytest to pass the parameter value to a fixture instead of directly to the test function. The fixture then processes the parameter before the test runs.
Click to reveal answer
intermediate
How do indirect fixtures help when you want to prepare test data differently for each parameter?
Indirect fixtures let you customize setup logic for each parameter value, like creating different test objects or configurations, by receiving the parameter and returning the prepared data.
Click to reveal answer
beginner
Example: What will happen if you use @pytest.mark.parametrize('input', [1, 2], indirect=True) with a fixture named 'input'?
The fixture 'input' will be called twice, once with 1 and once with 2 as parameter values. The test function will receive the fixture's return value each time.
Click to reveal answer
intermediate
Why might you prefer indirect parametrization over direct parametrization?
Because indirect parametrization allows complex setup or transformation of parameters before the test runs, making tests cleaner and more flexible.
Click to reveal answer
beginner
What is a common mistake when using indirect fixtures with parametrize?
A common mistake is forgetting to name the fixture the same as the parameter or not setting indirect=True, which causes pytest to pass the parameter directly instead of through the fixture.
Click to reveal answer
What does setting indirect=True in @pytest.mark.parametrize do?
ASkips the test for that parameter
BPasses the parameter to a fixture for processing
CRuns the test multiple times without parameters
DDirectly passes the parameter to the test function
If you parametrize 'data' with indirect=True, what must exist?
AA fixture named 'data'
BA test function named 'data'
CA global variable named 'data'
DA class named 'data'
Why use indirect parametrization in pytest?
ATo customize setup logic for each parameter
BTo skip tests automatically
CTo run tests in parallel
DTo reduce test execution time
What happens if you forget indirect=True but want to use a fixture?
AThe fixture is ignored
BThe test fails to run
CThe test runs only once
DThe parameter is passed directly to the test function
Which of these is a valid use of indirect parametrization?
A@pytest.mark.parametrize('config', [1, 2, 3])
B@pytest.mark.parametrize('config', ['dev', 'prod'])
C@pytest.mark.parametrize('config', ['dev', 'prod'], indirect=True)
D@pytest.mark.parametrize('config', None)
Explain how indirect parametrization works in pytest and why it is useful.
Think about how fixtures can prepare data differently for each parameter.
You got /5 concepts.
    Describe a scenario where indirect parametrization would be better than direct parametrization.
    Consider when test inputs require special preparation before testing.
    You got /4 concepts.