РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
790 of 818 menu

Декоратор override_settings

Декоратор override_settings применяется к тестовым методам или классам и позволяет временно переопределить значения параметров настроек Django на время выполнения теста. После завершения теста исходные значения восстанавливаются автоматически. Декоратор принимает произвольное количество именованных аргументов, где имя аргумента соответствует ключу в настройках, а значение - новому значению для этого ключа.

Синтаксис

from django.test import override_settings @override_settings(SETTING_NAME='new_value') def test_method(self): # Тестовый код pass

Пример

Давайте проверим, как изменяется поведение функции при изменении настройки DEBUG:

from django.test import TestCase, override_settings from django.conf import settings class SettingsTest(TestCase): def test_debug_true(self): with override_settings(DEBUG=True): self.assertTrue(settings.DEBUG) # Проверяем поведение при DEBUG=True res = "Debug mode is enabled" print(res) def test_debug_false(self): with override_settings(DEBUG=False): self.assertFalse(settings.DEBUG) # Проверяем поведение при DEBUG=False res = "Debug mode is disabled" print(res)

Результат выполнения кода:

"Debug mode is enabled" "Debug mode is disabled"

Пример

Декоратор можно применять ко всему классу тестов, чтобы все методы использовали переопределенные настройки:

from django.test import TestCase, override_settings from django.conf import settings @override_settings(LANGUAGE_CODE='ru-ru', TIME_ZONE='Europe/Moscow') class LocalizationTest(TestCase): def test_language_code(self): self.assertEqual(settings.LANGUAGE_CODE, 'ru-ru') res = "Language code is set to Russian" print(res) def test_timezone(self): self.assertEqual(settings.TIME_ZONE, 'Europe/Moscow') res = "Timezone is set to Moscow" print(res)

Результат выполнения кода:

"Language code is set to Russian" "Timezone is set to Moscow"

Пример

Декоратор можно использовать для изменения настроек базы данных, чтобы тестировать приложение с разными движками:

from django.test import TestCase, override_settings from django.conf import settings class DatabaseSettingsTest(TestCase): @override_settings( DATABASES={ 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': ':memory:' } } ) def test_memory_database(self): db_engine = settings.DATABASES['default']['ENGINE'] self.assertIn('sqlite3', db_engine) res = "Using SQLite in-memory database" print(res)

Результат выполнения кода:

"Using SQLite in-memory database"

Смотрите также

  • декоратор modify_settings,
    который позволяет изменять настройки, содержащие списки или словари
  • класс TestCase,
    который предоставляет базовую функциональность для написания тестов
  • класс SimpleTestCase,
    который используется для тестов без доступа к базе данных
  • класс TransactionTestCase,
    который используется для тестирования транзакций
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить