невозможно импортировать модуль в тот же каталог при использовании pytest - PullRequest
0 голосов
/ 26 мая 2019

У меня проблема с запуском pytest в ситуации, когда мое приложение вызывает другой скрипт в той же директории. Вот моя структура каталогов:

├── my_project/
│   ├── application/
│   |   ├──__init__.py
│   |   ├──app.py
│   |   ├──utils.py   
│   ├── application_test/
│   |   ├── __init__.py
│   │   ├── unit_test.py

Код в app.py имеет выражение: from utils import func1, func2, func3, и это прекрасно работает, когда я запускаю $ python app.py. Однако, когда я запускаю $ py.test с уровня каталога my_project, я получаю сообщение об ошибке «ModuleNotFoundError: Нет модуля с именем« utils »». Ошибки появляются из этой строки в unit_test.py:

import application.app

Поскольку эта строка вызывает app.py, который затем пытается импортировать из utils.py, и каким-то образом app.py не видит файл utils.py, даже если он находится в том же каталоге.

Я пытался использовать $ python -m pytest application_test, а также иметь __init__.py в корне и без, но ни один из этих или других ответов на stackoverflow, похоже, не работает.

1 Ответ

0 голосов
/ 26 мая 2019

Похоже, что операторы импорта относятся к каталогу, в котором вы сейчас находитесь. Решение для вызова другого скрипта в том же каталоге - использовать относительный импорт. В этом случае from .utils import func1, func2, func3 сработало!

...