如何使用 pytest-cov 生成覆盖率报告并打印到终端?
How can I use pytest-cov to both generate a coverage report and also print to terminal?
背景
我是从 unittest + coverage.py
切换过来的 pytest 和 pytest-cov 的新手
我首先以这种方式将我的自动化测试设置为 运行:
python3 -m pytest --cov=myapplication
这给了我这样的终端输出:
----------- coverage: platform linux, python 3.8.5-final-0 -----------
Name Stmts Miss Cover
-----------------------------------------------
myapplication/__init__.py 0 0 100%
myapplication/file.py 30 30 0%
myapplication/another_file.py 20 6 70%
[...]
-----------------------------------------------
TOTAL 1195 464 61%
然后我想生成一份 xml 报告,所以我更改了命令:
python3 -m pytest --cov-report xml:coverage.xml --cov=myapplication
问题
我遇到的问题是,在添加 --cov-report xml:coverage.xml
之后,我不再向终端输出任何内容
查看 the documentation for pytest-cov 我发现:
These three report options output to files without showing anything on the terminal:
[goes on to show xml, html and annotation reporting options]
问题
如何在同一个测试中既生成报告又打印到终端运行? (这甚至可能吗?)
(我可以 运行 测试套件两次,但如果可以的话我想一次完成所有事情)
我正在使用这些版本:
- Python 3.8.5
- pytest 6.2.2(撰写本文时的最新版本)
- pytest-cov 2.11.1 (-"-)
您可以通过使用一种终端输出格式指定另一个 --cov-report
参数来实现。您可以 --cov-report term
或 --cov-report term-missing
。例如:
python3 -m pytest --cov-report term --cov-report xml:coverage.xml --cov=myapplication
请参阅 pytest-cov docs you linked to 了解 term
和 term-missing
的工作原理。
背景
我是从 unittest + coverage.py
切换过来的 pytest 和 pytest-cov 的新手我首先以这种方式将我的自动化测试设置为 运行:
python3 -m pytest --cov=myapplication
这给了我这样的终端输出:
----------- coverage: platform linux, python 3.8.5-final-0 -----------
Name Stmts Miss Cover
-----------------------------------------------
myapplication/__init__.py 0 0 100%
myapplication/file.py 30 30 0%
myapplication/another_file.py 20 6 70%
[...]
-----------------------------------------------
TOTAL 1195 464 61%
然后我想生成一份 xml 报告,所以我更改了命令:
python3 -m pytest --cov-report xml:coverage.xml --cov=myapplication
问题
我遇到的问题是,在添加 --cov-report xml:coverage.xml
之后,我不再向终端输出任何内容
查看 the documentation for pytest-cov 我发现:
These three report options output to files without showing anything on the terminal: [goes on to show xml, html and annotation reporting options]
问题
如何在同一个测试中既生成报告又打印到终端运行? (这甚至可能吗?)
(我可以 运行 测试套件两次,但如果可以的话我想一次完成所有事情)
我正在使用这些版本:
- Python 3.8.5
- pytest 6.2.2(撰写本文时的最新版本)
- pytest-cov 2.11.1 (-"-)
您可以通过使用一种终端输出格式指定另一个 --cov-report
参数来实现。您可以 --cov-report term
或 --cov-report term-missing
。例如:
python3 -m pytest --cov-report term --cov-report xml:coverage.xml --cov=myapplication
请参阅 pytest-cov docs you linked to 了解 term
和 term-missing
的工作原理。