Как заставить мои модульные тесты Python импортировать протестированные модули, если они находятся в дочерних папках? - PullRequest
16 голосов
/ 14 февраля 2010

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

  1. ЦСИ
  2. тест

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

Ответы [ 3 ]

9 голосов
/ 14 февраля 2010

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

from src import module_name 

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

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

6 голосов
/ 15 февраля 2010

Попробуйте это:

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

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

0 голосов
/ 15 февраля 2010

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

  • Папка проекта
    1. src
    2. test

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

from src import module_name

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

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

...