我似乎无法获得鼻子测试框架来识别文件结构中测试脚本下的模块。我设置了最简单的示例来演示该问题。我会在下面解释。
这是包文件的结构:
./__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文件均为空
如果我nosetests -vv在主目录(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 <module> import foo ImportError: No module named foo ---------------------------------------------------------------------- Ran 1 test in 0.002s FAILED (errors=1)
当我从tests /目录中运行时,出现相同的错误。根据文档和我发现的示例,nose应该将所有父包都添加到路径以及调用它的目录中,但是在我看来,这似乎没有发生。
我正在使用Python 2.6.2运行Ubuntu 8.04。如果重要的话,我已经手动构建并安装了鼻子(不使用setup_tools)。
您__init__.py的顶级目录中有一个。这使其成为一个包装。如果将其删除,则nosetests应该可以工作。
__init__.py
nosetests
如果不删除它,则必须将其更改import为import dir.foo,这dir是目录的名称。
import
import dir.foo
dir