virtualenv的覆盖范围包括python标准库的测试

时间:2017-03-29 07:51:12

标签: python code-coverage python-unittest

我正在尝试运行代码的测试覆盖率。测试位于我项目的tests文件夹中。没有报道,我跑了:

python -m unittest discover tests -vb

并在test目录中运行所有测试。我尝试使用运行覆盖率报告

coverage run -m unittest discover test -vb

然后

coverage html

但是html报告包含来自标准库或第三方库的模块,这些模块包含在我的virtualenv的site-packages目录中。我认为覆盖率默认排除在外。如何正确运行coverage以排除代码之外的所有内容? Shoulde我使用--source标志并将其设置为我项目的根目录,例如

 coverage run --source=<project_root> -m unittest discover test -vb

1 个答案:

答案 0 :(得分:0)

我认为您的期望是正确的:默认情况下,您不应该获得python安装库的统计信息。我正在测试我的命令,只能覆盖我的模块。使用标志-L我可以获得python安装模块的覆盖范围。您是否可以自定义安装覆盖范围?或者以某种方式在您的配置中设置标志?您使用的是什么版本的保险?从版本的历史记录来看,对于早于v3.0b的版本,此选项的默认值似乎是正确的。 如果你在没有-m unittest discover的情况下运行(只是执行其中一个测试),你还能得到相同的吗? 您可以尝试使用--debug = sys,以防它产生有用的信息。