Как переопределить app_settings во время тестирования - PullRequest
0 голосов
/ 12 февраля 2020

Хорошо, теперь у меня есть

settings.py

SETTING1='value'
SETTING2='value'

После этого мы поняли, что эти настройки SETTING1 и SETTING2 более точно определены для app1 Итак, мы ' мы добавили их apps.py

from django.apps import AppConfig


class EXAPPConfig(AppConfig):
    name = 'EXAPPConfig'
    verbose_name = "EXAPPConfig"
    SETTING1 = 'value'
    def ready(self):
        pass

и назвали их views.py

app_settings = apps.get_app_config('ex_app')
app_settings.SETTING1

в соответствии с Django документацией

Так как я могу переопределить их с помощью override_settings в тестах @override_settings Я попытался @patch для исправления приложения конфигурации, но не смог

1 Ответ

1 голос
/ 12 февраля 2020

Вы можете смоделировать только атрибут конфигурации вашего приложения с помощью:

from unittest.mock import patch

from django.apps import apps
from django.test import TestCase


class EXAPPTest(TestCase):
    def test_mocking_app_config(self):
        original = apps.get_app_config('ex_app').SETTING1
        with patch.object(apps.get_app_config('ex_app'), 'SETTING1', new='definitely-not-original'):
            mocked = apps.get_app_config('ex_app').SETTING1
        self.assertNotEqual(original, mocked)
...