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?
✗ Incorrect
Setting indirect=True tells pytest to send the parameter to a fixture instead of directly to the test function.
If you parametrize 'data' with indirect=True, what must exist?
✗ Incorrect
The parameter name must match a fixture name to use indirect parametrization.
Why use indirect parametrization in pytest?
✗ Incorrect
Indirect parametrization allows you to customize how each parameter is prepared before the test runs.
What happens if you forget indirect=True but want to use a fixture?
✗ Incorrect
Without indirect=True, pytest passes parameters directly to the test function, not through the fixture.
Which of these is a valid use of indirect parametrization?
✗ Incorrect
Option C uses indirect=True to pass 'dev' and 'prod' to a fixture named 'config' for setup.
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.