В моем файле Django settings.py есть код, который обновляет настройки на основе переменных среды, например:
settings.py
DEBUG = bool(int(os.environ.get('DEBUG', 0)))
IЯ хочу протестировать это поведение, чтобы убедиться, что приложение загружается с переменными среды DEBUG=1
, тогда settings.DEBUG
имеет значение True
.
Я пробовал следующие тесты:
test_settings.py
import os
from unittest.mock import patch
from django.conf import settings
...
def test_debug_mode(self):
"""Test that debug mode is False by default"""
self.assertFalse(settings.DEBUG)
@patch.dict(os.environ, {'DEBUG': '1'})
def test_debug_true_if_env_var_1(self):
"""Test that debug mode set to true environment variable set"""
self.assertTrue(settings.DEBUG)
Однако каждый раз, когда я запускаю тесты, DEBUG устанавливается через переменные окружения в моей системе, а не из патча os.environ
.Я предполагаю, что settings.py
загружается до запуска моей тестовой функции, поэтому она уже установлена.
Есть ли способ, которым я могу смоделировать переменные окружения в тестовой функции, чтобы проверить мой файл settings.py?
Цените любые указания.