2016-03-01 8 views
2

Я новичок в Python, и я боюсь получить правильную структуру проекта, чтобы создать пакет и отдельный каталог tests к нему для модульных испытаний.Структура пакета Python для включения модульных тестов (ошибка родительского модуля не загружена)

Я пробовал следовать каноническому формату, описанному по адресу: http://docs.python-guide.org/en/latest/writing/structure/#sample-repository. К сожалению, даже при использовании example на GitHub я не могу получить эту работу:

python tests\test_basic.py 
Traceback (most recent call last): 
File "tests\test_basic.py", line 3, in <module> 
    from .context import sample 
SystemError: Parent module '' not loaded, cannot perform relative import 

python -m unittest не работает либо:

ERROR: sample (unittest.loader._FailedTest) 
ImportError: Failed to import test module: sample 
Traceback (most recent call last): 
    File "C:\ProgramData\chocolatey\lib\python3\tools\lib\unittest\loader.py", line 462, in _find_test_path 
    package = self._get_module_from_name(name) 
    File "C:\ProgramData\chocolatey\lib\python3\tools\lib\unittest\loader.py", line 369, in _get_module_from_name 
    __import__(name) 
    File "E:\source\python\samplemod\sample\__init__.py", line 1, in <module> 
    from .core import hmm 
    File "E:\source\python\samplemod\sample\core.py", line 9 
    print get_hmm() 
       ^
SyntaxError: invalid syntax 

EDIT: Ниже предполагает, что это выполнение тестов, но не является (как проверено путем отказа от испытаний)

> python setup.py test 
running test 

Любая идея, что здесь происходит? Если даже рекомендуемый формат не работает, то я высок и сух ... Я нахожусь на python 3.5.1 на Windows

EDIT: Я обнаружил, что если я установлю нос (python -m pip install nose), то могу выполните следующие испытания:

python -m nose 

ответ

2

Существует отличное объяснение выпуска here.

Короче говоря, у вас возникают проблемы при попытке использовать относительный импорт в скрипте (в отличие от модуля). Быстрое решение заключается в использовании аргумента -m при запуске тестового скрипта.

python -m tests\test_basic.py 

Если это не сработает, вы можете попробовать работать с абсолютным импортом. Приведенная выше ссылка предоставит более подробную информацию.

+0

Спасибо за предложение, но до сих пор не чувствую радости, используя ошибку '-m': ' Нет модуля с именем 'tests \\ test_basic' –

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

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