Step 1: Check syntax for multiple parametrize decorators
Each decorator takes one parameter name string and a list of values.
Step 2: Verify correct usage
@pytest.mark.parametrize('x', [1, 2])
@pytest.mark.parametrize('y', [3, 4])
def test_func(x, y): pass correctly uses two separate decorators, each with one parameter and its values.
Final Answer:
Two separate @pytest.mark.parametrize decorators, one for each parameter. -> Option D
Quick Check:
Separate decorators, one param each = correct syntax [OK]
Hint: Use separate decorators for each param list [OK]
Common Mistakes:
Trying to pass multiple params in one decorator incorrectly
Using wrong argument formats
Combining parameters in one decorator without tuples
3. Given the code below, how many test cases will pytest run?
@pytest.mark.parametrize('a', [1, 2])
@pytest.mark.parametrize('b', [3, 4, 5])
def test_sum(a, b):
assert a + b > 0
medium
A. 2
B. 6
C. 3
D. 5
Solution
Step 1: Count values for each parameter
Parameter 'a' has 2 values: 1, 2. Parameter 'b' has 3 values: 3, 4, 5.
Step 2: Calculate total test cases
pytest runs all combinations: 2 values for 'a' x 3 values for 'b' = 6 test cases.
Final Answer:
6 -> Option B
Quick Check:
2 x 3 = 6 test cases [OK]
Hint: Multiply counts of each param list for total tests [OK]
Common Mistakes:
Adding counts instead of multiplying
Counting only one decorator's values
Confusing number of test cases with assertion results
4. Identify the error in the following pytest code using multiple parametrize decorators:
@pytest.mark.parametrize('x', [1, 2])
@pytest.mark.parametrize('y', 3, 4)
def test_func(x, y):
assert x != y
medium
A. The assertion should use '==' instead of '!='.
B. The test function is missing a return statement.
C. The second parametrize decorator has incorrect argument format.
D. The parameters 'x' and 'y' must be combined in one decorator.
Solution
Step 1: Check parametrize decorator arguments
The second decorator uses @pytest.mark.parametrize('y', 3, 4), which is invalid because values must be in a list or iterable.
Step 2: Correct argument format
Values should be passed as a list: [3, 4]. Without brackets, it causes a syntax or runtime error.
Final Answer:
The second parametrize decorator has incorrect argument format. -> Option C
Quick Check:
Parametrize values must be in a list [OK]
Hint: Always wrap parametrize values in a list or iterable [OK]
Common Mistakes:
Passing multiple values without brackets
Thinking test functions need return statements
Believing parameters must be combined in one decorator
5. You want to test a function with parameters color and size. Colors are ['red', 'blue'], sizes are ['S', 'M', 'L']. You want to skip tests where color is 'red' and size is 'L'. How can you combine multiple @pytest.mark.parametrize decorators and skip that case?
hard
A. Use two parametrize decorators and inside the test, add pytest.skip() if color is 'red' and size is 'L'.
B. Combine parameters in one parametrize decorator with all pairs except ('red', 'L').
C. Use one parametrize decorator for color and one for size, no skipping needed.
D. Use multiple parametrize decorators and mark the test with @pytest.mark.skip.
Solution
Step 1: Use multiple parametrize decorators for color and size
Apply two decorators, one for colors ['red', 'blue'] and one for sizes ['S', 'M', 'L'], to get all combinations.
Step 2: Skip specific combination inside the test
Inside the test function, check if color is 'red' and size is 'L'. If yes, call pytest.skip() to skip that test case.
Final Answer:
Use two parametrize decorators and inside the test, add pytest.skip() if color is 'red' and size is 'L'. -> Option A
Quick Check:
Skip specific combos inside test with pytest.skip() [OK]
Hint: Skip unwanted combos inside test using pytest.skip() [OK]
Common Mistakes:
Trying to exclude combos in parametrize decorators directly
Using @pytest.mark.skip to skip all tests
Combining all pairs manually instead of skipping in test
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.