如何覆盖未测试的文件?

How do I make coverage include not tested files?

我刚刚开始为我使用 unittestcoverage 的 python 项目编写一些单元测试。我目前只测试了一小部分,但我正在尝试计算代码覆盖率

我 运行 我的测试并使用以下方法获得覆盖率

python -m unittest discover -s tests/
coverage run -m unittest discover -s tests/
coverage report -m

我遇到的问题是 coverage 告诉我有 44% 的代码覆盖率并且只计算以下文件:

  1. 在单元测试中进行了测试(即,所有未测试的文件均丢失且不在整体覆盖范围内)

  2. 在虚拟环境中的库和实际测试的代码覆盖率中。结果中不应该包括实际测试吗?

此外,它说在这些单元测试中实际测试的文件只测试了前几行(大多数情况下是 import 语句)

如何获得更真实的代码覆盖率,或者这就是它的本意?

如果您使用 nose 作为测试运行器,它的覆盖率插件会提供

  --cover-inclusive     Include all python files under working directory in
                        coverage report.  Useful for discovering holes in test
                        coverage if not all files are imported by the test
                        suite. [NOSE_COVER_INCLUSIVE]

  --cover-tests         Include test modules in coverage report
                        [NOSE_COVER_TESTS]

--source=. 添加到 coverage 运行 行。它会将焦点限制在当前目录,并将搜索 .py 根本不是 运行 的文件。