Невозможно запустить сервер и тесты без изменения импорта - PullRequest
2 голосов
/ 29 мая 2019

Я создаю сайт с рамкой для бутылок.Я использую тесты носа для моего юнит-тестирования.Однако есть проблема, которую я не могу решить самостоятельно.

Кажется, я не могу найти способ, позволяющий мне запускать тесты, не ломая мой сервер.Когда я запускаю свои тесты, мне нужно сделать относительный импорт, чтобы они работали, но они не работают, когда я запускаю сервер.

Это моя структура папок:

├── service
│   ├── __init__.py
│   ├── application.py
│   ├── main.py
│   ├── response_header.py
│   ├── global_data_loader.py
│   ├── renderer
│   │   ├── __init__.py
│   │   ├── header.py
│   │   ├── ....
│   ├── tests
│   │   ├── test_application.py
│   │   ├── ....

Вот как я импортирую, чтобы мой сервер работал:

application.py --
from response_header import ResponseHeader
from global_data_loader import GlobalDataLoader
from renderer import Application

Однако, когда я запускаю тесты на нос, я получаю это сообщение: ModuleNotFoundError: No module named 'response_header'

Поэтому, когда я хочу, чтобы тесты на нос работали, я имеючтобы изменить импорт так, чтобы он выглядел следующим образом:

application.py --
from .response_header import ResponseHeader
from .global_data_loader import GlobalDataLoader
from .renderer import Application

Тогда мои тесты носа работают, но когда я хочу запустить свой сервер, я получаю это сообщение:

from .response_header import ResponseHeader
ImportError: attempted relative import with no known parent package

Я пытался использовать sys.path.append в моих тестах, и это работает, но мне нужно решение, которое не включает PYTHONPATH или использование os / sys

edit: я исправил это, переместив свой main.py, который я использую для запускасервер в корневую папку, над моим сервисом и тестовым модулем.теперь работает нормально

...