mirror of
https://github.com/django/django.git
synced 2025-10-26 07:06:08 +00:00
Added TestCase.settings context manager to easily override settings in test methods.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@16165 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
@@ -2,11 +2,12 @@ from __future__ import with_statement
|
||||
|
||||
import re
|
||||
import sys
|
||||
from contextlib import contextmanager
|
||||
from functools import wraps
|
||||
from urlparse import urlsplit, urlunsplit
|
||||
from xml.dom.minidom import parseString, Node
|
||||
|
||||
from django.conf import settings
|
||||
from django.conf import settings, UserSettingsHolder
|
||||
from django.core import mail
|
||||
from django.core.management import call_command
|
||||
from django.core.signals import request_started
|
||||
@@ -341,6 +342,22 @@ class TransactionTestCase(ut2.TestCase):
|
||||
"""
|
||||
restore_warnings_state(self._warnings_state)
|
||||
|
||||
@contextmanager
|
||||
def settings(self, **options):
|
||||
"""
|
||||
A context manager that temporarily sets a setting and reverts
|
||||
back to the original value when exiting the context.
|
||||
"""
|
||||
old_wrapped = settings._wrapped
|
||||
override = UserSettingsHolder(settings._wrapped)
|
||||
try:
|
||||
for key, new_value in options.items():
|
||||
setattr(override, key, new_value)
|
||||
settings._wrapped = override
|
||||
yield
|
||||
finally:
|
||||
settings._wrapped = old_wrapped
|
||||
|
||||
def assertRedirects(self, response, expected_url, status_code=302,
|
||||
target_status_code=200, host=None, msg_prefix=''):
|
||||
"""Asserts that a response redirected to a specific URL, and that the
|
||||
|
||||
Reference in New Issue
Block a user