0
0
PyTesttesting~15 mins

pytest-cov for coverage - Build an Automation Script

Choose your learning style9 modes available
Measure test coverage using pytest-cov
Preconditions (4)
Step 1: Run pytest with the pytest-cov plugin enabled to measure coverage of calculator.py
Step 2: Use the command: pytest --cov=calculator test_calculator.py
Step 3: Observe the coverage report printed in the console
✅ Expected Result: The console shows a coverage report indicating the percentage of calculator.py code covered by tests, with no errors or failures
Automation Requirements - pytest
Assertions Needed:
Verify that the coverage report includes calculator.py
Verify that coverage percentage is 100% for calculator.py
Best Practices:
Use pytest-cov command line options correctly
Keep test and source code separate
Use clear and descriptive test function names
Automated Solution
PyTest
import subprocess
import re

def test_coverage_report():
    # Run pytest with coverage on calculator.py
    result = subprocess.run(
        ['pytest', '--cov=calculator', 'test_calculator.py', '--cov-report=term'],
        capture_output=True,
        text=True
    )
    output = result.stdout

    # Check pytest ran successfully
    assert result.returncode == 0, f"Pytest failed with output:\n{output}"

    # Check coverage report contains calculator.py
    assert 'calculator.py' in output, "Coverage report does not include calculator.py"

    # Extract coverage percentage for calculator.py using regex
    match = re.search(r'calculator.py\s+\d+\s+\d+\s+(\d+)%', output)
    assert match is not None, "Could not find coverage percentage for calculator.py"

    coverage_percent = int(match.group(1))
    assert coverage_percent == 100, f"Expected 100% coverage but got {coverage_percent}%"

This test runs pytest as a subprocess with the --cov=calculator option to measure coverage of the calculator.py module.

It captures the output and checks that pytest completed successfully (return code 0).

Then it verifies the coverage report includes calculator.py and extracts the coverage percentage using a regular expression.

Finally, it asserts the coverage is 100%, meaning all code lines in calculator.py are tested.

This approach automates verifying that coverage measurement works as expected using pytest-cov.

Common Mistakes - 3 Pitfalls
{'mistake': 'Not installing pytest-cov plugin before running coverage', 'why_bad': "Without pytest-cov installed, coverage options won't work and tests won't measure coverage", 'correct_approach': 'Install pytest-cov using pip before running coverage commands'}
Running pytest without specifying the module for coverage
Parsing coverage output incorrectly or not checking return code
Bonus Challenge

Now add data-driven testing to verify coverage for multiple modules like calculator.py and utils.py

Show Hint