В моем скрипте реализации есть строка, которая записывает метрику:
from datadog import statsd
def some_function:
statsd.increment('some_metric')
Из моего тестового сценария я утверждаю, что statsd.increment () вызывается путем макетирования модуля datadog:
datadog = Mock()
sys.modules['datadog'] = datadog
def test():
some_function()
datadog.statsd.increment.assert_called()
Это отлично работает и проходит. Но как только я добавляю ДРУГОЙ скрипт, который вызывает some_function()
без насмешливого datadog, этот скрипт запускается заранее и загружает настоящий модуль datadog в кеш. Приведенный выше тест завершается ошибкой, поскольку some_function()
больше не использует фиктивный журнал данных, а использует реальный (кэшированный) журнал данных.
Как я могу решить это? Можно ли удалить модуль из кеша?