ノーズテストフレームワークに、ファイル構造内のテストスクリプトの下にあるモジュールを認識させることができないようです。問題を示す最も簡単な例を設定しました。以下で説明します。
パッケージファイルの構造は次のとおりです。
./__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がある)メインディレクトリに、私が取得します:
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ではなく)手動で鼻を構築してインストールしました。