Тестирование функций, которые не предоставляются пакетом - PullRequest
0 голосов
/ 07 января 2019

У меня есть следующий макет пакета (, как рекомендуется здесь ):

 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 делает свое дело. Однако это, похоже, нарушает относительный импорт. Я могу пока жить без относительного импорта, но это стандартный / надежный способ настройки модульных тестов или это сломается в долгосрочной перспективе?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...