1. What does setting a coverage threshold in pytest ensure?
easy
A. Only tests with coverage above 90% are executed
B. Tests run faster by skipping some checks
C. The test run fails if coverage is below a set percentage
D. Coverage reports are hidden from the user
Solution
Step 1: Understand coverage threshold purpose
Coverage thresholds set a minimum coverage percentage to maintain test quality.
Step 2: Effect of coverage below threshold
If coverage is below the threshold, pytest fails the test run to alert missing tests.
Final Answer:
The test run fails if coverage is below a set percentage -> Option C
Quick Check:
Coverage threshold = fail if below limit [OK]
Hint: Coverage threshold means minimum coverage to pass tests [OK]
Common Mistakes:
Thinking threshold speeds up tests
Believing threshold skips tests
Assuming threshold hides reports
2. Which is the correct pytest command to set a coverage fail threshold at 80%?
easy
A. pytest --cov-fail-under=80
B. pytest --fail-under-cov=80
C. pytest --coverage-threshold=80
D. pytest --fail-coverage=80
Solution
Step 1: Recall pytest coverage threshold syntax
The correct option uses --cov-fail-under to set minimum coverage.
Step 2: Match the correct command
pytest --cov-fail-under=80 matches the exact pytest CLI option for coverage fail threshold.
Final Answer:
pytest --cov-fail-under=80 -> Option A
Quick Check:
Correct CLI option = --cov-fail-under [OK]
Hint: Use --cov-fail-under to set coverage threshold [OK]
Common Mistakes:
Mixing option order or names
Using non-existent flags
Confusing coverage threshold with other options
3. Given this pytest command: pytest --cov=myapp --cov-fail-under=90 and coverage report shows 85%, what will happen?
medium
A. Tests pass but with a warning
B. Tests fail due to coverage below 90%
C. Tests run without coverage check
D. Coverage report is not generated
Solution
Step 1: Understand the coverage threshold set
The command sets a fail threshold at 90% coverage.
Step 2: Compare actual coverage with threshold
Actual coverage is 85%, which is below 90%, so pytest fails the test run.
Final Answer:
Tests fail due to coverage below 90% -> Option B
Quick Check:
Coverage 85% < 90% threshold = fail [OK]
Hint: Coverage below threshold causes test failure [OK]
Common Mistakes:
Assuming tests pass with warning
Thinking coverage check is skipped
Believing report is not generated
4. You set --cov-fail-under=75 but pytest does not fail even when coverage is 70%. What is the likely cause?
medium
A. You must use --fail-under-cov instead
B. Threshold value must be above 80%
C. Coverage is always ignored in pytest
D. Coverage plugin is not installed or enabled
Solution
Step 1: Check coverage plugin status
If coverage plugin is missing or disabled, threshold has no effect.
Step 2: Understand threshold behavior
Threshold works only if coverage plugin runs and measures coverage.
Final Answer:
Coverage plugin is not installed or enabled -> Option D
Quick Check:
Missing plugin = threshold ignored [OK]
Hint: Ensure coverage plugin is active for thresholds to work [OK]
Common Mistakes:
Thinking threshold values have minimum limits
Believing coverage is ignored by default
Using wrong command option names
5. You want to enforce different coverage thresholds for branches and statements: 80% for branches and 90% for statements. Which pytest configuration snippet achieves this?
hard
A. [run]\nbranch = True\n[report]\nfail_under = 90\nfail_under_branch = 80
B. [run]\nbranch = True\n[report]\nfail_under = 80\nfail_under_branch = 90
C. [coverage]\nbranch = True\nthresholds = statements:90, branches:80
D. [coverage]\nfail_under_statements = 90\nfail_under_branches = 80
Solution
Step 1: Enable branch coverage in config
Set branch = True under [run] to measure branch coverage.
Step 2: Set fail thresholds correctly
Under [report], fail_under sets statement threshold, fail_under_branch sets branch threshold.
Final Answer:
[run]\nbranch = True\n[report]\nfail_under = 90\nfail_under_branch = 80 -> Option A