Jestem nowy w testowaniu jednostkowym. Chcę przeczytać kilka zmiennych env w testach jednostkowych django, ale mam pewne problemy podczas próby odczytania zmiennej env z django.conf.settings, ale mogę ją odczytać za pomocą os.environ.get(). Jak mogę uzyskać dostęp do bieżącej zmiennej env z django.conf.settings?
Kod testowy wygląda następująco:
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'
W settings.py:
ENV_VALUE = os.environ.get('ENV_VALUE', 'some other value')
Próbuję przetestować poprawne zachowanie kodu w zależności od env var.
W niektórych częściach kodu istnieje pewna logika, taka jak:
if settings.ENV_VALUE and setting.ENVIRONMENT == 'local':
# do some stuff
1 odpowiedź
Możesz nadpisać ustawienia django za pomocą override_settings
dekorator:
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'))
Podobne pytania
Nowe pytania
python
Python to wielozadaniowy, wielozadaniowy język programowania dynamicznie typowany. Został zaprojektowany tak, aby był szybki do nauczenia się, zrozumienia i użycia oraz wymuszania czystej i jednolitej składni. Należy pamiętać, że Python 2 oficjalnie nie jest obsługiwany od 01-01-2020. Mimo to, w przypadku pytań Pythona specyficznych dla wersji, dodaj znacznik [python-2.7] lub [python-3.x]. Korzystając z wariantu Pythona (np. Jython, PyPy) lub biblioteki (np. Pandas i NumPy), należy umieścić go w tagach.
django.conf.settings
? Jeśli tak, został skonfigurowany i przypuszczam, żedjango.conf.settings.ENV_VALUE
maENV_VALUE
zbuforowany (w postaci str/list/...), a nie jakoos.getenv(...)
, więc modyfikacja środowiska nie wpływają na ustawienia.