我似乎不能让
nose testing framework识别文件结构中我的测试脚本下面的模块。我设置了最简单的例子来演示这个问题。我会在下面解释。
这里是包文件结构:
./__init__.py
./foo.py
./tests
./__init__.py
./test_foo.py
foo.py包含:
def dumb_true():
return True
tests / test_foo.py包含:
import foo
def test_foo():
assert foo.dumb_true()
两个init.py文件都为空
如果我在主目录(foo.py是)运行nosetests -vv,我得到:
Failure: ImportError (No module named foo) ... ERROR
======================================================================
ERROR: Failure: ImportError (No module named foo)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/python/site-packages/nose-0.11.1-py2.6.egg/nose/loader.py", line 379, in loadTestsFromName
addr.filename, addr.module)
File "/usr/lib/python/site-packages/nose-0.11.1-py2.6.egg/nose/importer.py", line 39, in importFromPath
return self.importFromDir(dir_path, fqname)
File "/usr/lib/python/site-packages/nose-0.11.1-py2.6.egg/nose/importer.py", line 86, in importFromDir
mod = load_module(part_fqname, fh, filename, desc)
File "/home/user/nose_testing/tests/test_foo.py", line 1, in
import foo
ImportError: No module named foo
----------------------------------------------------------------------
Ran 1 test in 0.002s
FAILED (errors=1)
我得到相同的错误,当我从里面运行测试/目录。根据文档和an example我发现,鼻子应该添加所有父包到路径以及从它被调用的目录,但这似乎并没有发生在我的情况。
我使用Python 2.6.2运行Ubuntu 8.04。我已经构建并手动安装鼻子(不使用setup_tools)如果这很重要。