Bird
Raised Fist0
PyTesttesting~20 mins

Multiple parameters in PyTest - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Multiple Parameters Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of pytest with multiple parameters
What will be the output when running this pytest code with multiple parameters?
PyTest
import pytest

@pytest.mark.parametrize("x", [1, 2])
@pytest.mark.parametrize("y", [3, 4])
def test_sum(x, y):
    assert x + y > 3
A4 tests run, all pass
B2 tests run, all pass
C2 tests run, some fail
D4 tests run, some fail
Attempts:
2 left
💡 Hint
Remember how pytest combines multiple parametrize decorators.
❓ assertion
intermediate
2:00remaining
Correct assertion for multiple parameters
Which assertion correctly verifies that the product of parameters a and b is always even in this test?
PyTest
import pytest

@pytest.mark.parametrize("a", [1, 2])
@pytest.mark.parametrize("b", [2, 3])
def test_product_even(a, b):
    # Choose the correct assertion below
Aassert (a - b) % 2 == 0
Bassert (a + b) % 2 == 0
Cassert (a * b) % 2 == 1
Dassert (a * b) % 2 == 0
Attempts:
2 left
💡 Hint
Check which operation and condition ensures even product.
🔧 Debug
advanced
2:00remaining
Identify the error in multiple parameter test
What error will this pytest code raise when run?
PyTest
import pytest

@pytest.mark.parametrize("x, y", [(1, 2), (3, 4)])
@pytest.mark.parametrize("z", [5, 6])
def test_values(x, y, z):
    assert x + y + z > 0
Apytest runs 4 tests, all pass
BTypeError: test_values() missing 1 required positional argument: 'z'
Cpytest runs 6 tests, all pass
DValueError: too many values to unpack
Attempts:
2 left
💡 Hint
Check how pytest combines multiple parametrize decorators with multiple arguments.
❓ locator
advanced
2:00remaining
Best locator for multiple parameter test cases
In a test report, which locator best identifies a test case with parameters x=2 and y=3 in pytest?
Atest_sum(x=2,y=3)
Btest_sum[2-3]
Ctest_sum_2_3
Dtest_sum(2,3)
Attempts:
2 left
💡 Hint
pytest uses a specific format for parameterized test IDs.
❓ framework
expert
2:00remaining
Understanding parameter combination in pytest
Given these decorators, how many total test cases will pytest generate?
PyTest
import pytest

@pytest.mark.parametrize("a", [1, 2])
@pytest.mark.parametrize("b, c", [(3, 4), (5, 6)])
@pytest.mark.parametrize("d", [7])
def test_func(a, b, c, d):
    pass
A8 tests
B2 tests
C4 tests
D16 tests
Attempts:
2 left
💡 Hint
Multiply the number of values in each parametrize considering grouping.

Practice

(1/5)
1. What is the main purpose of using @pytest.mark.parametrize with multiple parameters in pytest?
easy
A. To run the same test function with different sets of input values
B. To skip tests conditionally based on input values
C. To group multiple test functions into one
D. To generate test reports automatically

Solution

  1. Step 1: Understand the role of @pytest.mark.parametrize

    This decorator allows running a test multiple times with different inputs.
  2. Step 2: Recognize the benefit of multiple parameters

    Using multiple parameters lets you test combinations of inputs easily in one test function.
  3. Final Answer:

    To run the same test function with different sets of input values -> Option A
  4. Quick Check:

    Multiple parameters = multiple input sets [OK]
Hint: Parametrize runs tests repeatedly with different inputs [OK]
Common Mistakes:
  • Thinking it skips tests instead of running multiple times
  • Confusing it with grouping tests
  • Assuming it generates reports automatically
2. Which of the following is the correct syntax to parametrize a test function with two parameters a and b in pytest?
easy
A. @pytest.mark.parametrize((a, b), [(1, 2), (3, 4)])
B. @pytest.mark.parametrize('a, b', [(1, 2), (3, 4)])
C. @pytest.mark.parametrize([a, b], [(1, 2), (3, 4)])
D. @pytest.mark.parametrize('a b', [(1, 2), (3, 4)])

Solution

  1. Step 1: Recall the correct parameter names format

    Pytest expects a string with parameter names separated by commas, e.g., 'a, b'.
  2. Step 2: Check the value list format

    Values must be a list of tuples matching the parameters, e.g., [(1, 2), (3, 4)].
  3. Final Answer:

    @pytest.mark.parametrize('a, b', [(1, 2), (3, 4)]) -> Option B
  4. Quick Check:

    Parameter names as string with commas [OK]
Hint: Use a string with comma-separated names for parameters [OK]
Common Mistakes:
  • Using tuple or list instead of string for parameter names
  • Missing commas between parameter names
  • Using space instead of comma to separate names
3. What will be the output when running this pytest test?
import pytest

@pytest.mark.parametrize('x, y', [(1, 2), (3, 4)])
def test_sum(x, y):
    assert x + y == 3
medium
A. First test passes, second test fails
B. Both tests fail
C. Both tests pass
D. First test fails, second test passes

Solution

  1. Step 1: Evaluate first test with inputs (1, 2)

    Sum is 1 + 2 = 3, assertion 3 == 3 passes.
  2. Step 2: Evaluate second test with inputs (3, 4)

    Sum is 3 + 4 = 7, assertion 7 == 3 fails.
  3. Final Answer:

    First test passes, second test fails -> Option A
  4. Quick Check:

    Check sums against 3 [OK]
Hint: Calculate sums for each tuple and compare [OK]
Common Mistakes:
  • Assuming all tests pass without checking values
  • Ignoring that assertion compares to fixed number 3
  • Confusing which test input causes failure
4. Identify the error in this pytest code using multiple parameters:
import pytest

@pytest.mark.parametrize('a, b', [1, 2, 3])
def test_multiply(a, b):
    assert a * b > 0
medium
A. The test function must return a value
B. The parameter names should be a list, not a string
C. The assertion syntax is incorrect
D. The parameter values should be tuples, not integers

Solution

  1. Step 1: Check the parameter values format

    Values must be a list of tuples matching parameters (a, b), but here it's a list of integers.
  2. Step 2: Understand why this causes error

    Pytest tries to unpack each integer into two variables, causing a TypeError.
  3. Final Answer:

    The parameter values should be tuples, not integers -> Option D
  4. Quick Check:

    Values must match parameter count [OK]
Hint: Use tuples for multiple parameters values [OK]
Common Mistakes:
  • Passing a flat list instead of list of tuples
  • Thinking parameter names must be a list
  • Expecting test function to return a value
5. You want to test a function is_even_sum(a, b) that returns True if the sum of a and b is even. Which @pytest.mark.parametrize setup with a single decorator correctly tests all combinations of a from [1, 2] and b from [3, 4] respectively?
hard
A. @pytest.mark.parametrize('a', [1, 2]) @pytest.mark.parametrize('b', [3, 4])
B. @pytest.mark.parametrize('a, b', [(1, 2), (3, 4)])
C. @pytest.mark.parametrize('a, b', [(1, 3), (1, 4), (2, 3), (2, 4)])
D. @pytest.mark.parametrize('a, b', [(1, 3), (2, 4)])

Solution

  1. Step 1: Understand the need to test all combinations

    We want to test every pair from a=[1,2] and b=[3,4], so all 4 pairs must be covered.
  2. Step 2: Recognize the benefit of multiple parameters

    @pytest.mark.parametrize('a, b', [(1, 3), (1, 4), (2, 3), (2, 4)]) lists all pairs explicitly: (1,3), (1,4), (2,3), (2,4).
  3. Final Answer:

    @pytest.mark.parametrize('a, b', [(1, 3), (1, 4), (2, 3), (2, 4)]) -> Option C
  4. Quick Check:

    All pairs listed explicitly [OK]
Hint: List all pairs explicitly for full coverage [OK]
Common Mistakes:
  • Missing some pairs in the list
  • Using separate decorators without knowing cartesian product effect
  • Confusing parameter order or values
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard