Ошибка импорта носа Python

Я, может казаться, не заставляю среду тестирования носа распознавать модули под моим сценарием тестирования в файловой структуре. Я настроил самый простой пример, который демонстрирует проблему. Я объясню это ниже.

Вот файловая структура пакета:

./__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 
    import foo
ImportError: No module named foo

----------------------------------------------------------------------
Ran 1 test in 0.002s

FAILED (errors=1)

Я получаю ту же ошибку, когда я запускаю из тестов / каталог. Согласно документации и примеру я нашел, нос, как предполагается, добавляет все родительские пакеты к пути, а также каталогу, из которого это называют, но этого, кажется, не происходит в моем случае.

Я запускаю Ubuntu 8.04 с Python 2.6.2. Я создал и установил нос вручную (не с setup_tools), если это имеет значение.

117
задан alecxe 25 April 2013 в 20:19
поделиться

1 ответ

У вас есть __ init __. Py в вашем каталоге верхнего уровня. Это делает его пакетом. Если вы удалите его, ваши тесты носа должны работать.

Если вы не удалите его, вам придется изменить свой import на import dir.foo , где dir - это имя вашего каталог.

219
ответ дан 24 November 2019 в 02:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: