Bird
Raised Fist0
PyTesttesting~5 mins

Coverage thresholds in PyTest - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is a coverage threshold in testing?
A coverage threshold is a set minimum percentage of code that must be tested. If tests cover less than this, the test run fails.
Click to reveal answer
beginner
How do you set a coverage threshold in pytest?
You set it using the --cov-fail-under option followed by a number, like --cov-fail-under=80 to require at least 80% coverage.
Click to reveal answer
beginner
Why use coverage thresholds?
Coverage thresholds help keep tests thorough. They stop code from being accepted if tests don't cover enough, improving quality.
Click to reveal answer
beginner
What happens if coverage is below the threshold in pytest?
The test run fails and pytest returns a non-zero exit code. This alerts you to add more tests.
Click to reveal answer
intermediate
Can coverage thresholds be set for specific parts of code?
Yes, you can set thresholds for the whole project or for specific files or directories using configuration files like .coveragerc.
Click to reveal answer
What does the pytest option --cov-fail-under=90 do?
AFails tests if coverage is below 90%
BSets coverage to exactly 90%
CIgnores coverage below 90%
DRuns tests only on 90% of code
Why is setting a coverage threshold useful?
ATo skip tests
BTo speed up tests
CTo reduce code size
DTo ensure tests cover enough code
If coverage is 75% but threshold is 80%, what happens?
ATest run passes
BTest run fails
CCoverage is ignored
DTests rerun automatically
Can coverage thresholds be set per file in pytest?
AYes, using configuration files
BNo, only global thresholds
COnly for test files
DOnly for Python 2
What exit code does pytest return if coverage threshold is not met?
AZero exit code
BExit code 100
CNon-zero exit code
DNo exit code
Explain how to enforce a minimum coverage percentage using pytest.
Think about the command line option that sets the minimum coverage.
You got /3 concepts.
    Describe why coverage thresholds improve software quality.
    Consider the role of tests in catching problems.
    You got /3 concepts.

      Practice

      (1/5)
      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

      1. Step 1: Understand coverage threshold purpose

        Coverage thresholds set a minimum coverage percentage to maintain test quality.
      2. Step 2: Effect of coverage below threshold

        If coverage is below the threshold, pytest fails the test run to alert missing tests.
      3. Final Answer:

        The test run fails if coverage is below a set percentage -> Option C
      4. 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

      1. Step 1: Recall pytest coverage threshold syntax

        The correct option uses --cov-fail-under to set minimum coverage.
      2. Step 2: Match the correct command

        pytest --cov-fail-under=80 matches the exact pytest CLI option for coverage fail threshold.
      3. Final Answer:

        pytest --cov-fail-under=80 -> Option A
      4. 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

      1. Step 1: Understand the coverage threshold set

        The command sets a fail threshold at 90% coverage.
      2. Step 2: Compare actual coverage with threshold

        Actual coverage is 85%, which is below 90%, so pytest fails the test run.
      3. Final Answer:

        Tests fail due to coverage below 90% -> Option B
      4. 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

      1. Step 1: Check coverage plugin status

        If coverage plugin is missing or disabled, threshold has no effect.
      2. Step 2: Understand threshold behavior

        Threshold works only if coverage plugin runs and measures coverage.
      3. Final Answer:

        Coverage plugin is not installed or enabled -> Option D
      4. 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

      1. Step 1: Enable branch coverage in config

        Set branch = True under [run] to measure branch coverage.
      2. Step 2: Set fail thresholds correctly

        Under [report], fail_under sets statement threshold, fail_under_branch sets branch threshold.
      3. Final Answer:

        [run]\nbranch = True\n[report]\nfail_under = 90\nfail_under_branch = 80 -> Option A
      4. Quick Check:

        Branch coverage enabled + correct thresholds = [run]\nbranch = True\n[report]\nfail_under = 90\nfail_under_branch = 80 [OK]
      Hint: Use [run] branch=True and [report] fail_under_branch for branches [OK]
      Common Mistakes:
      • Swapping statement and branch thresholds
      • Using wrong config section names
      • Missing branch = True setting