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

StackOverflow https://stackoverflow.com/questions/2262546

Вопрос

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

  1. источник
  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, которые я пишу:

  • Папка проекта
    1. источник
    2. тест

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

from src import module_name

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top