从环境变量引入单元测试Django设置

时间:2019-02-13 12:39:19

标签: python django python-unittest django-testing python-unittest.mock

我的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文件?

赞赏任何指导。

0 个答案:

没有答案