pytest-timeout is used to set a maximum time limit for test functions. If a test runs longer than the specified time, it is stopped and marked as failed.
Click to reveal answer
beginner
How do you apply a timeout of 5 seconds to a single test function using pytest-timeout?
You add the decorator @pytest.mark.timeout(5) above the test function to limit its execution time to 5 seconds.
Click to reveal answer
beginner
What happens if a test exceeds the timeout set by pytest-timeout?
The test is interrupted and marked as failed with a timeout error, helping to catch tests that hang or run too long.
Click to reveal answer
intermediate
How can you set a global timeout for all tests in pytest using pytest-timeout?
You can add timeout = 5 in the pytest.ini configuration file under the [pytest] section to apply a 5-second timeout to all tests.
Click to reveal answer
beginner
Why is it useful to set time limits on tests?
Setting time limits helps detect infinite loops, slow tests, or deadlocks early, improving test suite reliability and speed.
Click to reveal answer
Which pytest-timeout decorator sets a 10-second limit on a test?
A@pytest.timeout(10)
B@pytest.set_timeout(10)
C@timeout(10)
D@pytest.mark.timeout(10)
✗ Incorrect
The correct decorator is @pytest.mark.timeout(10) to set a 10-second timeout.
What happens when a test exceeds the timeout set by pytest-timeout?
ATest is marked as failed
BTest is skipped
CTest continues running
DTest is retried automatically
✗ Incorrect
The test is stopped and marked as failed due to timeout.
Where do you configure a global timeout for all tests using pytest-timeout?
AIn setup.py
BIn the test function decorator
CIn pytest.ini file
DIn requirements.txt
✗ Incorrect
Global timeout is set in pytest.ini under the [pytest] section.
Which of these is NOT a benefit of using pytest-timeout?
ADetecting infinite loops
BAutomatically fixing test bugs
CPreventing hanging tests
DImproving test speed
✗ Incorrect
pytest-timeout does not fix bugs; it only stops tests that run too long.
How do you install pytest-timeout?
Apip install pytest-timeout
Bpip install timeout-pytest
Cpip install pytest-time
Dpip install timeout
✗ Incorrect
The correct package name is pytest-timeout.
Explain how to set a timeout for a single test and what happens if the test exceeds this timeout.
Think about the decorator and test failure behavior.
You got /4 concepts.
Describe how to configure a global timeout for all tests in pytest using pytest-timeout.
Consider pytest configuration files.
You got /4 concepts.
Practice
(1/5)
1. What is the main purpose of using pytest-timeout in test cases?
easy
A. To stop tests that run longer than a specified time limit
B. To increase the speed of test execution by skipping tests
C. To automatically retry failed tests
D. To generate detailed test coverage reports
Solution
Step 1: Understand pytest-timeout functionality
pytest-timeout is designed to stop tests that exceed a time limit to prevent long waits.
Step 2: Compare options with pytest-timeout purpose
Only To stop tests that run longer than a specified time limit matches this purpose; others describe different pytest features.
Final Answer:
To stop tests that run longer than a specified time limit -> Option A
Quick Check:
pytest-timeout stops long tests = C [OK]
Hint: Remember: pytest-timeout stops tests running too long [OK]
Common Mistakes:
Confusing timeout with test retries
Thinking it speeds up tests by skipping
Mixing it with coverage reporting
2. Which of the following is the correct way to set a 5-second timeout for a test function using pytest-timeout?
easy
A. @pytest.mark.timeout(seconds=5)
def test_example(): pass
B. @pytest.timeout(5)
def test_example(): pass
C. @pytest.mark.timeout(5)
def test_example(): pass
D. @pytest.timeout(seconds=5)
def test_example(): pass
The correct decorator is @pytest.mark.timeout(5) using a positional argument.
Step 2: Check each option's syntax
@pytest.mark.timeout(5)
def test_example(): pass uses correct syntax with positional argument 5. @pytest.mark.timeout(seconds=5)
def test_example(): pass incorrectly uses keyword argument 'seconds=5'. The options using @pytest.timeout use wrong decorator names.
Final Answer:
@pytest.mark.timeout(5)
def test_example(): pass -> Option C
Quick Check:
Use @pytest.mark.timeout(5) = A [OK]
Hint: Use @pytest.mark.timeout(5) to set 5 seconds [OK]
Common Mistakes:
Using @pytest.timeout instead of @pytest.mark.timeout
Passing seconds as a keyword argument
Missing the @pytest.mark prefix
3. Given the following test code, what will happen when running pytest?
@pytest.mark.timeout(2)
def test_sleep():
import time
time.sleep(3)
medium
A. The test will pass because sleep is allowed
B. The test will raise a syntax error
C. The test will be skipped automatically
D. The test will fail due to exceeding the 2-second timeout
Solution
Step 1: Analyze the timeout and sleep duration
The test has a 2-second timeout but sleeps for 3 seconds, exceeding the limit.
Step 2: Understand pytest-timeout behavior on timeout
pytest-timeout stops the test and marks it as failed if it runs longer than the timeout.
Final Answer:
The test will fail due to exceeding the 2-second timeout -> Option D
Quick Check:
Sleep 3s > timeout 2s = fail [OK]
Hint: If test runs longer than timeout, it fails [OK]
Common Mistakes:
Assuming test passes despite timeout
Thinking test is skipped automatically
Confusing timeout with syntax errors
4. Identify the error in the following pytest test using pytest-timeout:
@pytest.mark.timeout(3)
def test_loop():
for i in range(5):
time.sleep(1)
medium
A. Timeout value is too low for the loop
B. Missing import of the time module
C. Incorrect decorator syntax
D. The test will pass without errors
Solution
Step 1: Check for missing imports
The test uses time.sleep(1) but does not import the time module.
Step 2: Verify other aspects
The timeout and decorator syntax are correct. The missing import will cause a NameError.
Final Answer:
Missing import of the time module -> Option B
Quick Check:
Using time.sleep without import = error [OK]
Hint: Always import modules before using their functions [OK]
Common Mistakes:
Ignoring missing imports
Assuming timeout causes error instead
Thinking decorator syntax is wrong
5. You want to apply a 10-second timeout to all tests in a pytest file without adding @pytest.mark.timeout to each test. Which is the best way to do this?
hard
A. Add pytestmark = pytest.mark.timeout(10) at the top of the test file
B. Set timeout=10 in pytest.ini configuration file
C. Use @pytest.mark.timeout(10) on a dummy test and inherit it
D. Add timeout=10 as a command line argument every time
Solution
Step 1: Understand pytestmark usage
Setting pytestmark = pytest.mark.timeout(10) applies the timeout decorator to all tests in the file automatically.
Step 2: Evaluate other options
Adding timeout as a command line argument requires specifying --timeout=10 every time pytest is run; setting timeout in pytest.ini applies it globally to all tests in the project; using a dummy test for inheritance is not a valid pytest feature. pytestmark is best for this specific file.
Final Answer:
Add pytestmark = pytest.mark.timeout(10) at the top of the test file -> Option A
Quick Check:
pytestmark applies decorator to all tests [OK]
Hint: Use pytestmark variable to apply timeout to all tests [OK]
Common Mistakes:
Trying to set timeout in pytest.ini (global, not file-specific)
Using dummy test inheritance (not valid)
Relying on command line timeout argument (inconvenient)
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.