Модульное тестирование настроек Django, извлеченных из переменных среды - PullRequest
0 голосов
/ 13 февраля 2019

В моем файле 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?

Цените любые указания.

...