Bird
Raised Fist0
PyTesttesting~20 mins

Single parameter in PyTest - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Single Parameter Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of pytest single parameter test
What is the output of this pytest test when run?
PyTest
import pytest

@pytest.mark.parametrize('num', [1, 2, 3])
def test_is_positive(num):
    assert num > 0

if __name__ == '__main__':
    pytest.main(['-v'])
ASyntaxError during test collection
B1 test passed, 2 failed
C3 tests passed
DAll tests skipped
Attempts:
2 left
💡 Hint
Each parameter value runs the test once.
❓ assertion
intermediate
2:00remaining
Assertion failure with single parameter
Given this test, which input causes the assertion to fail?
PyTest
import pytest

@pytest.mark.parametrize('value', [1, 2, -1])
def test_positive(value):
    assert value > 0
Avalue = 1
Bvalue = -1
Cvalue = 0
DAll values pass
Attempts:
2 left
💡 Hint
Check which values are not greater than zero.
❓ locator
advanced
2:00remaining
Best locator for pytest parameter name
Which locator correctly identifies the parameter name in this pytest decorator?
PyTest
@pytest.mark.parametrize('input_value', [10, 20])
def test_func(input_value):
    assert input_value > 0
AJSON path for parameter list
BXPath locating function name 'test_func'
CCSS selector for function body
DRegex matching 'parametrize\('([^']+)'
Attempts:
2 left
💡 Hint
The parameter name is inside the string in parametrize decorator.
🔧 Debug
advanced
2:00remaining
Debugging failing pytest parameter test
Why does this pytest test fail?
PyTest
import pytest

@pytest.mark.parametrize('x', [1, 2, 3])
def test_double(x):
    assert x * 2 == '2', 'Expected double to be string "2"'
AComparing int to str causes assertion failure
BSyntaxError in parametrize decorator
CTypeError because x is not iterable
DTest passes without error
Attempts:
2 left
💡 Hint
Check the types compared in the assertion.
❓ framework
expert
2:00remaining
Effect of single parameter on test count in pytest
If a pytest test uses @pytest.mark.parametrize with a single parameter having 4 values, how many test cases are executed?
PyTest
import pytest

@pytest.mark.parametrize('val', [10, 20, 30, 40])
def test_val(val):
    assert val > 0
A4 test cases executed
B1 test case executed
C16 test cases executed
D0 test cases executed
Attempts:
2 left
💡 Hint
Each parameter value runs the test once.

Practice

(1/5)
1. What is the purpose of using a single parameter in a pytest test function?
easy
A. To define multiple test functions at once
B. To make the test function run only once
C. To skip the test function during execution
D. To pass different values to the test function for repeated testing

Solution

  1. Step 1: Understand pytest parameterization

    Pytest allows passing parameters to test functions to run the same test with different inputs.
  2. Step 2: Role of a single parameter

    A single parameter lets you supply multiple values to the test, so it runs multiple times with each value.
  3. Final Answer:

    To pass different values to the test function for repeated testing -> Option D
  4. Quick Check:

    Single parameter = multiple test runs [OK]
Hint: Single parameter means testing with different inputs [OK]
Common Mistakes:
  • Thinking single parameter defines multiple tests
  • Confusing parameter with skipping tests
  • Assuming single parameter runs test once only
2. Which of the following is the correct syntax to use a single parameter with pytest's @pytest.mark.parametrize decorator?
easy
A. @pytest.mark.parametrize('num', 1, 2, 3)
B. @pytest.mark.parametrize(num, [1, 2, 3])
C. @pytest.mark.parametrize('num', [1, 2, 3])
D. @pytest.mark.parametrize(['num'], 1, 2, 3)

Solution

  1. Step 1: Check parameter name format

    The parameter name must be a string inside quotes, e.g., 'num'.
  2. Step 2: Check values format

    The values must be inside a list or iterable, e.g., [1, 2, 3].
  3. Final Answer:

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

    Parametrize syntax = string + list [OK]
Hint: Parameter name in quotes, values in list brackets [OK]
Common Mistakes:
  • Not quoting the parameter name
  • Passing values without list brackets
  • Using wrong argument structure
3. What will be the output when running this pytest code?
import pytest

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

Solution

  1. Step 1: Evaluate first test with x=2

    2 * 2 = 4, assertion is true, test passes.
  2. Step 2: Evaluate second test with x=4

    4 * 2 = 8, assertion 8 == 4 is false, test fails.
  3. Final Answer:

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

    2*2=4 pass, 4*2=8 fail [OK]
Hint: Check each input separately for assertion [OK]
Common Mistakes:
  • Assuming all tests pass without checking values
  • Mixing up which input causes failure
  • Ignoring assertion logic
4. Identify the error in this pytest code using a single parameter:
import pytest

@pytest.mark.parametrize('val', 1, 2, 3)
def test_positive(val):
    assert val > 0
medium
A. Parameter name should not be in quotes
B. Missing list brackets around parameter values
C. Test function must have two parameters
D. Assertion should use == instead of >

Solution

  1. Step 1: Check parametrize values format

    Values must be inside a list or iterable, e.g., [1, 2, 3].
  2. Step 2: Identify missing brackets

    Code passes values as separate arguments instead of a single list, causing syntax error.
  3. Final Answer:

    Missing list brackets around parameter values -> Option B
  4. Quick Check:

    Values need list brackets [OK]
Hint: Values must be in a list or tuple [OK]
Common Mistakes:
  • Passing values without brackets
  • Removing quotes from parameter name
  • Wrong assertion operator
5. Given this test function, how can you modify it to test multiple string inputs using a single parameter?
def test_is_uppercase(s):
    assert s.isupper()
hard
A. Add @pytest.mark.parametrize('s', ['HELLO', 'WORLD']) above the function
B. Change function to accept two parameters s and t
C. Use a for loop inside the test to iterate over strings
D. Call test_is_uppercase multiple times manually

Solution

  1. Step 1: Understand parameterizing tests

    Using @pytest.mark.parametrize allows running the test multiple times with different inputs.
  2. Step 2: Apply parametrize decorator with string list

    Adding @pytest.mark.parametrize('s', ['HELLO', 'WORLD']) runs test_is_uppercase twice with each string.
  3. Final Answer:

    Add @pytest.mark.parametrize('s', ['HELLO', 'WORLD']) above the function -> Option A
  4. Quick Check:

    Parametrize decorator runs test with multiple inputs [OK]
Hint: Use @pytest.mark.parametrize with list of inputs [OK]
Common Mistakes:
  • Trying to pass multiple parameters instead of one
  • Using loops inside test instead of parametrize
  • Calling test manually instead of using pytest features
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