Как заставить мои модульные тесты Python импортировать тестируемые модули, если они находятся в родственных папках?
-
20-09-2019 - |
Вопрос
Я все еще ломаю голову над import
заявление.Если у меня есть 2 папки на одном уровне:
- источник
- тест
Как сделать py
файлы в test
импортируйте модули в src
?Есть ли лучшее решение (например, поместить одну папку в другую?)
Решение
Код, который вам нужен, предназначен для использования src/module_name.py.
from src import module_name
и корневой каталог находится в вашем PYTHONPATH, например.вы запускаете из корневого каталога
Я использую вашу структуру каталогов, но вместо нее используется имя модели из src.Я получил эту структуру от Блог Джей Кальдероне и похоже на Гугл-блог
Другие советы
Попробуйте это:
import sys
import os
sys.path.append(os.path.join('..', 'src'))
import module_in_src_folder
отредактировано для поддержки любой платформы
У меня точно такая же ситуация, как и у ОП, со всеми проектами Python, которые я пишу:
- Папка проекта
- источник
- тест
Все модули, будь то в src или test, или в их подпапках, всегда используют форму import
что Марк показывает в своем ответе:
from src import module_name
Что я сделал, так это написал модуль, который находится в Project Folder
и рекурсивно обнаруживает все тестовые модули в папке тестов и заставляет unittest запускать все эти тесты.Поскольку Python работает Project Folder
, то модули относятся к рабочему каталогу.
Это означает, что тесты такие же, как и у любого другого клиента, которому нужны модули из src
.