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

virtualenv的覆盖范围包括对python标准库的测试,python,code-coverage,python-unittest,Python,Code Coverage,Python Unittest,我正在尝试运行代码的测试覆盖率。测试位于我的项目的Tests文件夹中。没有报道,我跑: python -m unittest discover tests -vb 并在测试目录中运行所有测试。我试着运行覆盖率报告 coverage run -m unittest discover test -vb 然后 coverage html 但是html报告包含来自标准库或第三方库的模块,这些库包含在my virtualenv的站点包目录中。我以为保险范围默认排除了这一点。如何正确运行覆盖率以排除代

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

python -m unittest discover tests -vb
并在测试目录中运行所有测试。我试着运行覆盖率报告

coverage run -m unittest discover test -vb
然后

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

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

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

使用Coverage.py,4.2版,带有C扩展名,将源代码设置为项目根wokred。但在覆盖完成后,我不会立即得到总覆盖率的结果。我需要运行报告。可以在同一步骤上完成吗?我需要把它放在我的gitlab ci管道中,我不知道是否可以在同一个命令中运行和报告。您的用例不允许您一个接一个地执行?e、 g:覆盖率运行--source=-m单元测试发现测试-vb | |覆盖率报告