3

背景

我是使用 pytest 和 pytest-cov 的新手,已从 unittest + coverage.py 切换

我首先将我的自动化测试设置为以这种方式运行:

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我不再获得任何输出到终端

查看pytest-cov 的文档,我发现:

这三个报告选项输出到文件而不在终端上显示任何内容:[继续显示 xml、html 和注释报告选项]

问题

如何在同一测试运行中既生成报告又打印到终端?(这甚至可能吗?)

(我可以运行测试套件两次,但如果可以的话,我想一次做所有事情)


我正在使用这些版本:

  • 蟒蛇 3.8.5
  • pytest 6.2.2(撰写本文时的最新版本)
  • pytest-cov 2.11.1 (-"-)
4

1 回答 1

8

--cov-report您可以通过使用一种终端输出格式指定另一个参数来做到这一点。您可以拥有--cov-report term--cov-report term-missing。例如:

python3 -m pytest --cov-report term --cov-report xml:coverage.xml --cov=myapplication

有关如何和工作的信息,请参阅您链接到的 pytest-cov 文档。termterm-missing

于 2021-02-19T15:48:19.723 回答