2016-02-04 2 views
2

Когда я бегу:Как разрешить UnitTest ImportErrors

python -m unittest discover unit_tests

или

python setup.py test

Я получаю много ImportErrors для blowdrycss project.

Пример:

test_BreakpointParser (unittest.loader._FailedTest) ... ERROR 
test_classExtractor (unittest.loader._FailedTest) ... ERROR 
test_classPropertyParser (unittest.loader._FailedTest) ... ERROR 
test_colorParser (unittest.loader._FailedTest) ... ERROR 
test_CSSBuilder (unittest.loader._FailedTest) ... ERROR 
test_CSSFile (unittest.loader._FailedTest) ... ERROR 
test_CSSPropertyValueParser (unittest.loader._FailedTest) ... ERROR 
... 
ImportError: No module named 'settings' 
ImportError: No module named 'blowdrycss_settings' 
ImportError: No module named 'blowdrycss.blowdrycss_settings' 
ImportError: No module named 'utilities' 
ImportError: No module named 'breakpointparser' 

Структура проекта:

blowdrycss/ 
    blowdrycss/ 
     settings/ 
      __init__.py 
      blowdrycss_settings.py 
     unit_tests/ 
      __init__.py 
      test_BreakpointParser.py 
      test_*.py 
      ... 
     __init__.py 
     blowdrycss.py 
     breakpointparser.py 
     utilities.py 
     ...  

Что странно, что когда я запустить эти тесты из PyCharm все проходит, но когда я запускаю из командной строки она ломается.

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

Как устранить эти ошибки импорта?

ответ

4

Было несколько проблем.

Основная проблема заключалась в том, что blowdrycss.py было тем же именем, что и пакет. Это вызвало смущение импортера python.

Изменение названия blowdrycss.py на blowdry.py помогло.

Другая половина проблемы заключалась в том, что текущий рабочий каталог не был добавлен в PYTHONPATH. Я исправил это, добавив следующие строки к __init__.py:

cwd = os.getcwd() 
sys.path.insert(0, cwd) 

 Смежные вопросы

  • Нет связанных вопросов^_^