Python没有';在覆盖范围和机头下运行时看不到子模块

Python没有';在覆盖范围和机头下运行时看不到子模块,python,nose,coverage.py,python-coverage,Python,Nose,Coverage.py,Python Coverage,当我使用coverage.py运行一组测试,其中nose是底层的测试运行程序时,我得到一个导入错误。如果我只是在Python下运行,测试运行得很好 coverage run run_tests.py ERROR ====================================================================== ERROR: <nose.suite.ContextSuite context=nova.tests> --------------

当我使用coverage.py运行一组测试,其中nose是底层的测试运行程序时,我得到一个导入错误。如果我只是在Python下运行,测试运行得很好

coverage run run_tests.py
ERROR

======================================================================
ERROR: <nose.suite.ContextSuite context=nova.tests>
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/lorin/nova/hpc-trunk/.nova-venv/lib/python2.6/site-packages/nose/suite.py", line 208, in run
    self.setUp()
  File "/Users/lorin/nova/hpc-trunk/.nova-venv/lib/python2.6/site-packages/nose/suite.py", line 291, in setUp
    self.setupContext(ancestor)
  File "/Users/lorin/nova/hpc-trunk/.nova-venv/lib/python2.6/site-packages/nose/suite.py", line 314, in setupContext
    try_run(context, names)
  File "/Users/lorin/nova/hpc-trunk/.nova-venv/lib/python2.6/site-packages/nose/util.py", line 478, in try_run
    return func()
  File "/Users/lorin/nova/trunk/nova/tests/__init__.py", line 43, in setup
    from nova import context
ImportError: cannot import name context
当我以
python run_tests.py
的形式运行它时,我看到以下输出:

['/Users/lorin/nova/hpc-trunk/nova']
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 
 'api', 'auth', 'compute', 'console', 'context', 'crypto', 'db', 'exception', 
 'fakerabbit', 'flags', 'image', 'ipv6', 'log', 'manager', 'network', 'objectstore', 
 'quota', 'rpc', 'scheduler', 'service', 'test', 'tests', 'twistd', 'utils', 'version', 
 'virt', 'vnc', 'volume', 'wsgi']
['/Users/lorin/nova/hpc-trunk/nova']
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 
 'api', 'tests']
但是,当我以
coverage run_tests.py
的形式运行此测试时,我会看到以下输出:

['/Users/lorin/nova/hpc-trunk/nova']
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 
 'api', 'auth', 'compute', 'console', 'context', 'crypto', 'db', 'exception', 
 'fakerabbit', 'flags', 'image', 'ipv6', 'log', 'manager', 'network', 'objectstore', 
 'quota', 'rpc', 'scheduler', 'service', 'test', 'tests', 'twistd', 'utils', 'version', 
 'virt', 'vnc', 'volume', 'wsgi']
['/Users/lorin/nova/hpc-trunk/nova']
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 
 'api', 'tests']
在每种情况下,它似乎都在相同的位置找到nova模块,但在我使用覆盖率运行它的情况下,Python没有看到大多数子模块:(auth、compute、…)控制台


请注意,当我为nose使用coverage插件时,这个问题不会发生,但在这个特殊情况下,我不想使用该插件。

这是coverage.py的问题。当它将当前目录插入sys.path列表时,它没有使用绝对路径,这导致了这个问题。Coverage.py现在已修复: