处理 Python 覆盖率中的 No source for code 错误

问题描述

我有这个旧的“无代码源”问题的新变体。

"No source for code" message in Coverage.py

这是我看到的错误

$ coverage report
No source for code: '/home/pauljohn/GIT/projects/ml_grb/grb/packages/grb/tests/C:\Users\G33987\.conda\envs\grb\lib\site-packages\grb\review\review.py'.
Aborting report output,consider using -i.

我在 Linux 中,与 Windows 队友“G33987”在 Git 存储库中工作。如您所见,我当前的工作目录是 /home/pauljohn/GIT/projects/ml_grb/grb/packages/grb/tests,我使用的虚拟环境在 ~/venv-grb 中。请注意,最奇怪的是它正在我的测试文件夹中寻找一个文件,其中附加了一个队友安装的“grb”包文件夹的完整路径,“C:\Users\G33987.conda...”

我可以添加“-i”标志来忽略问题,但我想理解和修复。

在关于coverage.py 的此问题的其他帖子中,该问题与测试文件夹中存在.coverage 的旧副本或存在*.pyc 文件有关。我已经检查过,我们的 Git 存储库没有跟踪任何 pyc 文件。但是,它错误地跟踪了原始 .coverage 文件。但我们不再跟踪它,我在两次运行之间手动删除了它。

到目前为止,我有这个工作流程

  1. coverage erase
  2. find . -name "*.pyc" -exec rm {} \;
  3. coverage run --source=grb -m pytest .
  4. coverage report

我可以运行 coverage report -i 来忽略问题,并且输出确实提供了我自己的虚拟环境中文件的逐行报告。但我对忽略错误感到厌恶。对队友虚拟环境的引用从何而来?我没有使用 conda 虚拟环境,而是纯 Python 虚拟环境。

Python 3.8.5
coverage 5.5
pytest 6.2.2
py 1.10.0
pluggy 0.13.1

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)