Non riesco a far sì che il framework di test del naso riconosca i moduli sotto il mio script di test nella struttura del file. Ho impostato l'esempio più semplice che dimostra il problema. Lo spiegherò di seguito.
Ecco la struttura del file del pacchetto:
./__init__.py
./foo.py
./tests
./__init__.py
./test_foo.py
foo.py contiene:
def dumb_true():
return True
tests / test_foo.py contiene:
import foo
def test_foo():
assert foo.dumb_true()
Entrambi i file init .py sono vuoti
Se nosetests -vv
eseguo nella directory principale (dove si trova foo.py), ottengo:
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)
Ottengo lo stesso errore quando eseguo dalla directory tests /. Secondo la documentazione e un esempio che ho trovato, nose dovrebbe aggiungere tutti i pacchetti genitore al percorso così come la directory da cui è chiamato, ma questo non sembra accadere nel mio caso.
Uso Ubuntu 8.04 con Python 2.6.2. Ho costruito e installato il naso manualmente (non con setup_tools) se è importante.