Coverage.py中的“无代码源”消息

2024-05-29 10:00:45 发布

您现在位置:Python中文网/ 问答频道 /正文

昨晚我成功地完成了一个构建。我今天早上起来运行另一个程序,没有改变任何配置或修改任何源代码。现在我的构建失败了,在运行我的nosetests和coverage时,出现了消息“没有源代码”。

NoSource: No source for code: '/home/matthew/.hudson/jobs/myproject/workspace/tests/unit/util.py'
. . . 
No source for code: '/home/matthew/.hudson/jobs/myproject/workspace/__init__.py'

我唯一的线索是它说找不到的文件不在那里,但它们从来没有,也不应该在那里。例如,在后者中,Hudson的工作区不是Python模块,因此__init__.py不会存在。

更新:我已确认这不是哈德逊问题。当我运行包含目录本身的nostest时,我会看到类似的消息。同样,报道所寻找的文件从一开始就没有,这让人非常困惑。


Tags: 文件nopy消息sourcehomefor源代码
3条回答

摘要:运行nosetests --with-coverage时保留现有的覆盖率数据,因此请先删除它。

详细信息:我也是通过哈德逊和鼻子测试遇到的。这个错误来自coverage/results.py:18(覆盖范围3.3.1-有3个地方引发了这个错误,但这是相关的错误)。它试图打开与实际跟踪的模块对应的.py文件。一个小演示:

$ echo print > hello.py
$ echo import hello > main.py
$ coverage run main.py

$ rm hello.py
$ coverage xml
No source for code: '/tmp/aoeu/hello.py'

显然我有一个文件stopwords.pyc,它被执行/跟踪,但是没有stopwords.py。但在我的代码中,没有任何地方是我导入了stopwords,甚至删除了.pyc,我仍然得到了错误。

然后,一个简单的strings .coverage显示对stopwords.py的引用仍然存在。nosetests --with-coverage正在使用coverage的追加或合并功能,这意味着旧的.coverage数据仍在徘徊。事实上,删除。覆盖范围解决了这个问题。

我不知道它为什么认为该文件存在,但可以告诉coverage.py使用coverage xml -i开关忽略这些问题。

如果你想找出错误,给我打个电话(ned在ned batchelder com)。

确保那里没有.pyc文件,这可能是过去存在的。

相关问题 更多 >

    热门问题