10

我正在尝试让 pytest 运行以使用 coveragerc 文件。我的 .coveragerc 文件中的设置没有使用,所以我猜该文件根本没有使用。

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

项目:

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

我从 virtualenv 调用 test/run.py

basepath$ python test/run.py

运行.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
4

2 回答 2

7

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

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

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

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

.coveragerc必须如上所述(和预期)放置在基本路径中

于 2012-04-10T15:08:56.107 回答
0

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

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

pytest --cov-config=.coveragerc
       --cov=myproj
       myproj/tests/

此插件覆盖覆盖的 data_file 和并行选项。除非您在没有 pytest-cov 的情况下也运行覆盖,否则在 .coveragerc 中设置这些选项是没有意义的。

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

如果您使用 --cov-branch 选项,则覆盖范围的分支选项也将被覆盖。

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

于 2021-02-10T18:08:21.313 回答