The test function must accept the parameter named in parametrize, here 'input'.
Step 2: Identify missing parameter
The function test_example() has no parameters, so 'input' is undefined inside it.
Final Answer:
Missing parameter in test function definition -> Option B
Quick Check:
Parametrize param must match function argument [OK]
Hint: Function must accept all parametrize arguments [OK]
Common Mistakes:
Forgetting to add parameter to test function
Using wrong decorator name
Thinking input list must be strings
Misreading assertion syntax
5. You want to test a login form with multiple username and password pairs using data providers in pytest. Which approach correctly handles multiple parameters?
hard
A. @pytest.mark.parametrize('username', ['user1', 'user2'])
@pytest.mark.parametrize('password', ['pass1', 'pass2'])
def test_login(username, password):
assert username and password
B. @pytest.mark.parametrize('username_password', [('user1', 'pass1'), ('user2', 'pass2')])
def test_login(username_password):
assert username_password[0] and username_password[1]
C. @pytest.mark.parametrize(('username', 'password'), [('user1', 'pass1'), ('user2', 'pass2')])
def test_login(username, password):
assert username and password
D. @pytest.mark.parametrize('username', ['user1', 'user2'], 'password', ['pass1', 'pass2'])
def test_login(username, password):
assert username and password
Solution
Step 1: Understand multiple parameter usage in parametrize
To pass multiple parameters together, use a tuple of parameter names and a list of tuples with values.
Step 2: Identify correct syntax
@pytest.mark.parametrize(('username', 'password'), [('user1', 'pass1'), ('user2', 'pass2')])
def test_login(username, password):
assert username and password uses @pytest.mark.parametrize(('username', 'password'), [('user1', 'pass1'), ('user2', 'pass2')]), which is correct.
Final Answer:
Use tuple of parameter names and list of tuples for values -> Option C
Quick Check:
Multiple params = tuple names + list of tuples [OK]
Hint: Use tuple of names and list of tuples for multiple params [OK]