У меня есть простой модуль, который содержит служебные методы, такие как расшифровка пароля, удаление папки, которые используются другими модулями в коде. Я пытаюсь написать модульные тесты для этих методов.
Этот модуль импортирует другой модуль под названием LogFactory, который обрабатывает регистраторы и конфигурацию ведения журналов.
простоймодуль.py
from log import LogFactory
log = LogFactory.getlogger(__name__)
def decrypt(pass, key):
#magic
log.debug(message)
Проблема возникает здесь. Конфигурация ведения журнала передается в виде файла INI в модуль ведения журнала в модуле LogFactory. Общий код Python запускается сценарием оболочки, который заменяет определенные записи в файле INI перед запуском модуля Python. Так что в производстве все складывается гладко.
Проблема в том, что когда pytest импортирует первый производственный код, он сталкивается с ошибкой, когда значения, необходимые регистратору, не заменяются сценарием оболочки.
test_simplemodule.py
import simplemodule <----- ERROR, needed values absent from the INI
def test_decryption():
#test code
Я пока пишу тесты без записей в журнале. Но мне нужно в конечном итоге включить эти записи журнала позже.
1) Что я делаю неправильно с точки зрения дизайна, когда дело доходит до входа в служебные методы? Я чувствую, что ошибка в производственном коде, так как я не могу правильно написать для него модульный тест.
2) Я попробовал Monkeypatching, но понял, что ошибка возникает при импорте производственного кода.
3) Какова стандартная практика в такой ситуации? Отказаться от модульного тестирования и перейти к какой-то конечной автоматизации?