尽管.coveragerc似乎告诉它代码在哪里,但是coverage.py给出了“没有代码源”

时间:2019-07-19 22:40:50

标签: python code-coverage coverage.py

如果我在docker容器中调用\z run ...,则会根据需要获得一个python3 -m coverage文件。

但是,如果我尝试使用容器外部的.coverage文件生成html或文本报告,则会得到:

.coverage

No source for code: '/opt/anomaly/backplane/__init__.py'. Aborting report output, consider using -i. 存在,并且我在同一目录中有以下./backplane/__init__.py

.coveragerc

尽管[paths] source = ./ /opt/anomaly/. 文件打算告诉coverage.py,但似乎.不知道/opt/anomaly.coveragerc应该被视为同一件事他们是。

我已经在Google上搜索了很多,却一无所获。

我还生成了容器内的报告,并且工作正常。但是我真的很想在容器外部生成它们。


更新: Ned在coverage.py中提供了只有coverage combine使用[paths]的有用信息。

这是我目前要面对的问题:

.coveragerc

顺便说一句,我现在尝试在.coveragerc中使用相对路径,在.coveragerc中也使用绝对路径。目前都没有为我工作。

请注意,.api-coverage和.coverage具有相同的长度-由于路径的更改,我认为.coverage应该具有不同的长度。对于相对路径,.coverage应该较小;对于绝对路径,.coverage应该较大。

顺便说一句,我正在使用:

+ ./bin/terminate-api
+ sleep 2
+ lses
+ ls -l .coverage .api-coverage
ls: cannot access '.coverage': No such file or directory
-rw-rw-r-- 1 root root 13358 Jul 22 14:15 .api-coverage
+ python3 -m coverage combine .api-coverage
+ lses
+ ls -l .coverage .api-coverage
ls: cannot access '.api-coverage': No such file or directory
-rw-r--r-- 1 dstromberg dstromberg 13358 Jul 22 14:15 .coverage
+ python3 -m coverage html
No source for code: '/opt/anomaly/backplane/__init__.py'.
Aborting report output, consider using -i.

谢谢!

1 个答案:

答案 0 :(得分:0)

运行可执行文件.coverage需要运行时环境,在您的情况下,可以在容器内而不是主机内提供该环境。

这与删除结尾的/结合在一起。来自我的.coveragerc的/ opt / anomaly /。路径似乎已经解决了问题。