У меня есть следующий макет пакета (, как рекомендуется здесь ):
module/
lib/
__init__.py
module.py
util.py
tests/
env.py
test_util.py
Файл util.py
содержит служебную функцию f()
, которая повторно используется в пакете несколько раз. Он не доступен пользователям, поскольку не имеет смысла вне контекста пакета, но имеет смысл написать для него модульный тест.
Файл env.py
содержит следующие строки:
import os
import sys
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
Как мне настроить мой пакет так, чтобы модульные тесты имели доступ к util.f
?
Обновление: После некоторых возвратов в комментариях и некоторого тестирования кажется, что добавление каталога lib
к системному пути также добавляется:
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../lib')))
до env.py
делает свое дело. Однако это, похоже, нарушает относительный импорт. Я могу пока жить без относительного импорта, но это стандартный / надежный способ настройки модульных тестов или это сломается в долгосрочной перспективе?