Ответ 1
Если тест if LOGGING_ACTIVATED:
происходит на уровне модуля, вам необходимо убедиться, что этот модуль еще не импортирован. Код уровня модуля запускается только один раз (первый раз, когда модуль импортируется в любом месте), вы не можете проверить код, который не будет работать снова.
Если тест находится в функции, обратите внимание, что используемое глобальное имя LOGGING_ACTIVATED
, а не config.LOGGING_ACTIVATED
. Как таковой вам нужно исправить main.LOGGING_ACTIVATED
здесь:
@patch("main.LOGGING_ACTIVATED", True)
как фактическую ссылку, которую вы хотели заменить.
Также см. где исправлять раздел документации mock
.
Вы должны подумать о том, что рефакторинг кода на уровне модуля является чем-то более проверяемым. Хотя вы можете принудительно перезагрузить код модуля, удалив объект модуля из сопоставления sys.modules
, просто очистить, чтобы переместить код, который вы хотите проверить, в функцию.
Итак, если ваш код теперь выглядит примерно так:
if LOGGING_ACTIVATED:
amqp_connector = Connector()
рассмотрите возможность использования функции:
def main():
global amqp_connector
if LOGGING_ACTIVATED:
amqp_connector = Connector()
main()
или создать объект с атрибутами даже.