为啥 Coverage.py 会忽略没有覆盖的文件?

Posted

技术标签:

【中文标题】为啥 Coverage.py 会忽略没有覆盖的文件?【英文标题】:Why does Coverage.py ignore files with no coverage?为什么 Coverage.py 会忽略没有覆盖的文件? 【发布时间】:2017-08-22 00:01:52 【问题描述】:

我第一次跑

nosetests --with-coverage

所以我应该有一个包含所有默认设置的 .coverage 文件。

在文件夹_1 中,我有file_1.py、file_2.py 和file_3.py

当我 cd 进入 folder_1 并运行时

coverage report

它输出:

它不会为 file_3.py 生成任何东西!但是当我运行时:

coverage report file_3.py

上面写着:

它会跳过报告中没有覆盖的文件吗?如何更改它以便报告显示每个 *.py 文件的结果?

【问题讨论】:

请复制并粘贴来自coverage 的输出,而不是发布文本图像。 【参考方案1】:

您需要为coverage.py 指定一个源目录以查找根本没有执行过的文件。您可以在命令行中使用--source=folder_1,或在.coveragerc 文件中使用[run] source=folder_1

【讨论】:

不知何故,当我执行:“覆盖报告”时,我得到了完整的报告。但是当我执行:“coverage run”时,它会显示“Nothing to do”。我在这里做错了什么?我正在查看这些文档:coverage.readthedocs.io/en/coverage-4.3.4/source.html “coverage run”需要一个程序才能运行:“coverage run myprog.py” 那么对于从未执行过的文件,我是否可以只指定位置并说“在这里运行所有东西”,而不是命名每个单独的文件? 你把代码的运行和代码的分析混为一谈了。你必须告诉报道要运行什么。运行该文件后,--source=folder_1 选项会告诉它在查找尚未执行的代码时考虑 folder_1 中的所有 Python 文件。

以上是关于为啥 Coverage.py 会忽略没有覆盖的文件?的主要内容,如果未能解决你的问题,请参考以下文章

为啥coverage.py 不能正确测量Django 的runserver 命令?

如何解释 Python coverage.py 分支覆盖结果?

如果 py.test 从另一个目录执行它,coverage.py 不会覆盖脚本

Coverage.py 警告:未收集数据。 (未收集数据)

从 coverage.py 运行测试与从测试运行器运行覆盖

是否可以从 coverage.py 报告中排除测试目录?