Mat*_*ris 33 python continuous-integration code-coverage nosetests
我成功地昨晚跑了一个版本.我今天早上起床并运行另一个而不更改任何配置或修改任何源代码.现在我的构建与失败的消息"没有源代码"运行时我nosetests与覆盖范围.
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'
Run Code Online (Sandbox Code Playgroud)
我唯一的线索是,它说它找不到的文件不存在,但它们从来没有,它们不应该是.例如,在后者中,Hudson的工作区不是Python模块,因此__init__.py
不会存在.
更新:我已经确认这不是哈德森问题.当我在目录本身运行带有覆盖的nostests时,我看到类似的消息.再一次,覆盖范围正在寻找的文件从来没有开始,这使得这非常令人费解.
Ros*_*oss 40
确保那里没有.pyc文件,这可能是过去存在的.
Ned*_*der 34
我不确定为什么它认为该文件存在,但你可以通过一个coverage xml -i
开关告诉coverage.py忽略这些问题.
如果你想追踪错误,请给我一行(ned batedlder com).
Yan*_*ang 15
摘要:运行时会保留现有的.coverage数据nosetests --with-coverage
,因此请先将其删除.
细节:我也是通过Hudson和nosetests遇到过的.这个错误来自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'
Run Code Online (Sandbox Code Playgroud)
显然我有一个文件stopwords.pyc被执行/跟踪,但没有stopwords.py.然而在我的代码中没有任何地方导入停用词,甚至删除.pyc我仍然得到错误.
一个简单的strings .coverage
然后揭示了对stopwords.py的引用仍然存在.nosetests --with-coverage
正在使用coverage的追加或合并功能,这意味着旧的.coverage数据仍然存在.确实,删除.coverage解决了这个问题.
只需使用'--cover-erase'参数即可.它修复了此错误,您无需手动删除coverage文件
nosetests --with-coverage --cover-erase
Run Code Online (Sandbox Code Playgroud)
我强烈建议查看帮助,看看你还缺少什么其他的args,也不要忘记那些插件
问题是该.pyc
文件仍然存在.
一个快速而肮脏的解决方案是删除.pyc
该目录中的所有文件:
find . -name "*.pyc" -exec rm -rf {} \;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7942 次 |
最近记录: |