Как сделать мои модульные тесты Python для импорта тестируемых модулей, если они находятся в папках сестра?

Я все еще склоняюсь к инструкции import. Если у меня есть 2 папки на одном уровне:

  • ЦСИ
  • тест

Как сделать файлы py в test импортировать модули в src? Есть ли лучшее решение (например, положить папку внутри другого?)

Ответы

Ответ 1

Код, который вы хотите, предназначен для использования src/module_name.py

from src import module_name 

и корневой каталог находится на вашем PYTHONPATH, например. вы запускаете из корневого каталога

Структура вашего каталога - это то, что я использую, но вместо имени модели вместо src. Я получил эту структуру из J Calderone blog и похож на Блог Google

Ответ 2

Попробуйте следующее:

import sys
import os
sys.path.append(os.path.join('..', 'src'))
import module_in_src_folder

отредактирован для поддержки любой платформы

Ответ 3

У меня точно такая же ситуация, как и у OP со всеми проектами python, которые я пишу:

  • Папка проекта
    • ЦСИ
    • тест

Все модули, как в src, так и в test, или вложенные папки из них всегда используют форму import, которую Марк показывает в своем ответе:

from src import module_name

Что я сделал, это написать модуль, который находится в Project Folder и рекурсивно обнаруживает все тестовые модули в тестовой папке и получает unittest для запуска всех этих тестов. Поскольку python работает в Project Folder, тогда модули относятся к рабочему каталогу.

Это означает, что тесты такие же, как и любой другой клиент, который хочет модули из src.