Python Pytest - Структура проекта и операторы импорта - PullRequest
0 голосов
/ 02 октября 2018

Предполагая следующую стандартную структуру проекта

- project
-- src
---- __init__.py
---- script1.py
---- script2.py
---- module
---- __init__.py
------ helper.py
-- test
---- __init__.py
---- test_script1.py
---- test_script2.py
---- module
---- __init__.py
------ test_helper.py

следующий импорт в script1.py

import script2
from module import helper

и в test_script1.py

from src import script1

Вызовтестирует из каталога проекта с помощью

python -m pytest tests

Сбой, потому что когда script1.py пытается импортировать, например, script2, модуль не будет найден, потому что root - это проект / тест, который не содержит src, и выдает что-то вроде

 ModuleNotFoundError: No module named 'script2'

Модификация script1.py следующим образом

from src import script2
from src.module import helper

исправит импорт во время теста, но будет прерван при попытке запустить script1, корневая папка которого src (которая нене содержат себя).

Я предполагаю, что это стандартный случай, но я не смог найти чистого решения (имеется в виду , а не , полагаясь на sys.path.append ('src')).

Решение, указанное в Запуск unittest с типичной тестовой структурой каталогов не учитывает импорт в папку src.

В настоящее время мой обходной путьтестовая папкавнутри src

- project
-- src
---- __init__.py
---- script1.py
---- script2.py
---- module
---- __init__.py
------ helper.py
---- test
------- __init__.py
------- test_script1.py
------- test_script2.py
------ module
------ __init__.py
-------- test_helper.py

и с внутренней частью ge test_script1.py следующий импорт

import script1

, но я хочу сохранить структуру папок, упомянутую в начале.

Я подумаю о тебе для любого предложения.

...