运行py.test时的.coveragerc文件位置

时间:2012-03-30 09:52:54

标签: python unit-testing code-coverage pytest

我正在尝试使用pyve run来运行coveragerc文件。我的.coveragerc文件中没有使用设置,所以我猜这个文件根本就没用过。

请参阅下面的我的项目结构和pytest调用!我做错了什么?

项目:

basepath/lib/
basepath/.coveragerc
basepath/test/test_lib
basepath/test/run.py

我从virtualenv调用test / run.py

basepath$ python test/run.py

run.py

import pytest
pytest.main('test/test_lib -v --cov-report xml --cov lib --cov-config .coveragerc')

我试图将.coveragerc移动到不同的目录中,即lib /,test /,test / test_lib /但它们都没有工作。

我希望在.coveragerc中设置一个名为“xxxcoverage”的覆盖文件,但我总是得到默认的.coverage

.coveragerc

[run]
data_file = xxxcoverage

2 个答案:

答案 0 :(得分:5)

一遍又一遍地阅读pytest文档......我发现了我的“错误”:
Here它说:

  

请注意,此插件控制一些选项,并且在配置文件中设置选项将不起作用。这些包括指定要测量的源(源选项)和所有数据文件处理(data_file和并行选项)。

所以我的测试没用,因为.coveragerc中的data_file选项没有效果。

我使用省略选项进行了测试,但它确实有效!

.coveragerc必须按照上述(和预期的)

放置在基本路径中

答案 1 :(得分:0)

我相信答案有所改变。取自https://pytest-cov.readthedocs.io/en/latest/config.html

您可以将 pytest-cov 指向这样的配置文件:

pytest --cov-config=.coveragerc
       --cov=myproj
       myproj/tests/
<块引用>

这个插件覆盖了数据文件和覆盖的并行选项。 除非你也在没有 pytest-cov 的情况下运行覆盖率,否则设置是毫无意义的 .coveragerc 中的那些选项。

如果您使用 --cov=something 选项(带有一个值),那么coverage 的 source 选项也将被覆盖。如果你有多个来源 可能更容易在 .coveragerc 中设置它们并始终使用 --cov (没有值)而不是使用 --cov=pkg1 的长命令行 --cov=pkg2 --cov=pkg3 ....

如果您使用 --cov-branch 选项,那么coverage 的分支选项将 也会被覆盖。

因此,可以指定源选项(至少如果您使用没有值的 --cov 运行它)