我是單元測驗的新手。我想在 django unittests 中讀取一些環境變數,但是在嘗試從 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')
我正在嘗試根據 env var 測驗代碼的正確行為。
在代碼的某些部分有一些邏輯,如:
if settings.ENV_VALUE and setting.ENVIRONMENT == 'local':
# do some stuff
uj5u.com熱心網友回復:
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'))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/420710.html
標籤:
