我的Django settings.py文件中有一些代码,这些代码根据环境变量来更新设置,例如:
settings.py
DEBUG = bool(int(os.environ.get('DEBUG', 0)))
我要测试此行为,以确保应用程序是否加载了环境变量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)
但是,每次运行测试时,都是通过系统上的环境变量而不是os.environ
补丁程序来设置DEBUG的。
我的猜测是settings.py
是在测试功能运行之前加载的,因此已经设置好了。
有没有办法在测试函数上模拟环境变量以测试我的settings.py文件?
赞赏任何指导。