我正在尝试使用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
答案 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 运行它)