如何从 django unittest 中的设置中读取环境变量?
How to read env vars from settings in django unittest?
我是单元测试的新手。我想在 Django 单元测试中读取一些环境变量,但在尝试从 django.conf.settings 读取环境变量时遇到了一些麻烦,但我可以使用 os.environ.get() 读取环境变量。如何从 django.conf.settings 访问当前环境变量?
测试代码如下所示:
from unittest.mock import patch
def test_functionality_in_non_production_environments(self):
with patch.dict('os.environ', {
'ENVIRONMENT': 'local',
'ENV_VALUE': 'test_env_value',
}):
from django.conf import settings
print(settings.ENV_VALUE) # --> DOES NOT PRINT 'test_env_value'
print(os.environ.get('ENV_VALUE')) # --> PRINTS 'test_env_value'
在settings.py中:
ENV_VALUE = os.environ.get('ENV_VALUE', 'some other value')
我正在尝试根据环境变量测试代码的正确行为。
在代码的某些部分,有一些逻辑如下:
if settings.ENV_VALUE and setting.ENVIRONMENT == 'local':
# do some stuff
您可以使用 override_settings
装饰器覆盖 django 设置:
from django.test import TestCase, override_settings
@override_settings(ENV_VALUE='test_env_value', ENVIRONMENT='local')
def test_functionality_in_non_production_environments(self):
from django.conf import settings
print(settings.ENV_VALUE)
print(os.environ.get('ENV_VALUE'))
我是单元测试的新手。我想在 Django 单元测试中读取一些环境变量,但在尝试从 django.conf.settings 读取环境变量时遇到了一些麻烦,但我可以使用 os.environ.get() 读取环境变量。如何从 django.conf.settings 访问当前环境变量?
测试代码如下所示:
from unittest.mock import patch
def test_functionality_in_non_production_environments(self):
with patch.dict('os.environ', {
'ENVIRONMENT': 'local',
'ENV_VALUE': 'test_env_value',
}):
from django.conf import settings
print(settings.ENV_VALUE) # --> DOES NOT PRINT 'test_env_value'
print(os.environ.get('ENV_VALUE')) # --> PRINTS 'test_env_value'
在settings.py中:
ENV_VALUE = os.environ.get('ENV_VALUE', 'some other value')
我正在尝试根据环境变量测试代码的正确行为。
在代码的某些部分,有一些逻辑如下:
if settings.ENV_VALUE and setting.ENVIRONMENT == 'local':
# do some stuff
您可以使用 override_settings
装饰器覆盖 django 设置:
from django.test import TestCase, override_settings
@override_settings(ENV_VALUE='test_env_value', ENVIRONMENT='local')
def test_functionality_in_non_production_environments(self):
from django.conf import settings
print(settings.ENV_VALUE)
print(os.environ.get('ENV_VALUE'))