Reporting¶
It is possible to generate any combination of the reports for a single test run.
The available reports are terminal (with or without missing line numbers shown), HTML, XML, JSON, Markdown (either in ‘write’ or ‘append’ mode to file), LCOV and annotated source code.
The terminal report without line numbers (default):
pytest --cov-report term --cov=myproj tests/
-------------------- coverage: platform linux2, python 2.6.4-final-0 ---------------------
Name Stmts Miss Cover
----------------------------------------
myproj/__init__ 2 0 100%
myproj/myproj 257 13 94%
myproj/feature4286 94 7 92%
----------------------------------------
TOTAL 353 20 94%
The terminal report with line numbers:
pytest --cov-report term-missing --cov=myproj tests/
-------------------- coverage: platform linux2, python 2.6.4-final-0 ---------------------
Name Stmts Miss Cover Missing
--------------------------------------------------
myproj/__init__ 2 0 100%
myproj/myproj 257 13 94% 24-26, 99, 149, 233-236, 297-298, 369-370
myproj/feature4286 94 7 92% 183-188, 197
--------------------------------------------------
TOTAL 353 20 94%
The terminal report with skip covered:
pytest --cov-report term:skip-covered --cov=myproj tests/
-------------------- coverage: platform linux2, python 2.6.4-final-0 ---------------------
Name Stmts Miss Cover
----------------------------------------
myproj/myproj 257 13 94%
myproj/feature4286 94 7 92%
----------------------------------------
TOTAL 353 20 94%
1 files skipped due to complete coverage.
You can use skip-covered with term-missing as well. e.g. --cov-report term-missing:skip-covered
The report options below output to files without showing anything on the terminal:
pytest --cov-report html
--cov-report xml
--cov-report json
--cov-report markdown
--cov-report markdown-append:cov-append.md
--cov-report lcov
--cov-report annotate
--cov=myproj tests/
The output location for each of these reports can be specified. The output location for the XML, JSON, Markdown and LCOV report is a file. markdown-append option is specially useful for appending the report to an existing file. Example for GitHub Actions: –cov-report=markdown-append:${GITHUB_STEP_SUMMARY}. Where as the output location for the HTML and annotated source code reports are directories:
pytest --cov-report html:cov_html
--cov-report xml:cov.xml
--cov-report json:cov.json
--cov-report markdown:cov.md
--cov-report markdown-append:cov-append.md
--cov-report lcov:cov.info
--cov-report annotate:cov_annotate
--cov=myproj tests/
The final report option can also suppress printing to the terminal:
pytest --cov-report= --cov=myproj tests/
This mode can be especially useful on continuous integration servers, where a coverage file is needed for subsequent processing, but no local report needs to be viewed. For example, tests run on GitHub Actions could produce a .coverage file for use with Coveralls.