Coverage.py Python code coverage
Light · Postcard
102 × 152 mm · PDF
Dark · Postcard
102 × 152 mm · PDF
Ink saver · Postcard
102 × 152 mm · PDF
Light · A4 landscape
297 × 210 mm · PDF
Dark · A4 landscape
297 × 210 mm · PDF
Ink saver · A4 landscape
297 × 210 mm · PDF
Light · A3 landscape
420 × 297 mm · PDF
Dark · A3 landscape
420 × 297 mm · PDF
Ink saver · A3 landscape
420 × 297 mm · PDF
Start here
coverage run -m pytest
coverage report -m
coverage htmlcoverage run --branch -m pytest
coverage run --source=<pkg> -m pytest
coverage report --fail-under=<n>
coverage combine
coverage eraseConcepts
- coverage run your tests or script
- .coverage SQLite data file
- report / html / xml json, lcov, annotate
- Humans and CI --fail-under gate, upload
Measure
coverage run <script.py> [args]
coverage run -m <module> [args]
coverage run -m pytest
coverage run --branch -m pytest
coverage run --source=<dir-or-pkg> ...
coverage run --omit=<pat> ...
coverage run -a ...
coverage run -p ...
coverage run --concurrency=<libs> ...
Report
coverage reportcoverage report -m
coverage report --skip-covered
coverage report --fail-under=<n>
coverage report --format=markdown
coverage report --format=total
coverage report --include=<pat>
HTML and other formats
coverage htmlcoverage html -d <dir>
coverage xml -o <file>
coverage json -o <file>
coverage lcov -o <file>
coverage annotate -d <dir>
Data files
coverage combine
coverage combine --keep
coverage erasecoverage debug data
coverage debug sys
coverage debug config
COVERAGE_FILE=<path> coverage run ...
Excluding code
# pragma: no cover
# pragma: no branch
exclude_also = [...]
[run] omit = [...]
[report] fail_under = <n>
[run] branch = true
[run] source = ["<pkg>"]
Parallel and CI
[run] parallel = true
[run] relative_files = true
[paths] src = ["src/",
"*/site-packages/"]
[run] concurrency = ["multiprocessing"]
Recipes
coverage erasecoverage run --branch -m pytestcoverage report -m --skip-coveredcoverage html && xdg-open htmlcov/index.html
coverage run --branch --source=<pkg> -m pytestcoverage report --fail-under=90coverage xml
# pyproject.toml: [tool.coverage.run] parallel = truecoverage run -m pytest tests/unitcoverage run -m pytest tests/integrationcoverage combinecoverage report -m
[tool.coverage.run]branch = truesource = ["<pkg>"][tool.coverage.report]show_missing = trueexclude_also = ["if TYPE_CHECKING:"]



