diff --git a/django/contrib/auth/tests/test_forms.py b/django/contrib/auth/tests/test_forms.py
index fa21d2f..eef366f 100644
--- a/django/contrib/auth/tests/test_forms.py
+++ b/django/contrib/auth/tests/test_forms.py
@@ -121,16 +121,17 @@ class AuthenticationFormTest(TestCase):
                          [force_text(form.error_messages['inactive'])])
 
     def test_inactive_user_i18n(self):
-        with self.settings(USE_I18N=True), translation.override('pt-br', deactivate=True):
-            # The user is inactive.
-            data = {
-                'username': 'inactive',
-                'password': 'password',
-                }
-            form = AuthenticationForm(None, data)
-            self.assertFalse(form.is_valid())
-            self.assertEqual(form.non_field_errors(),
-                             [force_text(form.error_messages['inactive'])])
+        with self.settings(USE_I18N=True):
+            with translation.override('pt-br', deactivate=True):
+                # The user is inactive.
+                data = {
+                    'username': 'inactive',
+                    'password': 'password',
+                    }
+                form = AuthenticationForm(None, data)
+                self.assertFalse(form.is_valid())
+                self.assertEqual(form.non_field_errors(),
+                                 [force_text(form.error_messages['inactive'])])
 
     def test_custom_login_allowed_policy(self):
         # The user is inactive, but our custom form policy allows him to log in.
diff --git a/django/contrib/humanize/tests.py b/django/contrib/humanize/tests.py
index 556c2ca..b0540e1 100644
--- a/django/contrib/humanize/tests.py
+++ b/django/contrib/humanize/tests.py
@@ -96,8 +96,9 @@ class HumanizeTests(TransRealMixin, TestCase):
 
     def test_intcomma_without_number_grouping(self):
         # Regression for #17414
-        with translation.override('ja'), self.settings(USE_L10N=True):
-            self.humanize_tester([100], ['100'], 'intcomma')
+        with translation.override('ja'):
+            with self.settings(USE_L10N=True):
+                self.humanize_tester([100], ['100'], 'intcomma')
 
     def test_intword(self):
         test_list = ('100', '1000000', '1200000', '1290000',
diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py
index 9d1b0fa..8410ec2 100644
--- a/tests/admin_views/tests.py
+++ b/tests/admin_views/tests.py
@@ -521,28 +521,31 @@ class AdminViewBasicTest(AdminViewBasicTestCase):
         if the default language is non-English but the selected language
         is English. See #13388 and #3594 for more details.
         """
-        with self.settings(LANGUAGE_CODE='fr'), translation.override('en-us'):
-            response = self.client.get('/test_admin/admin/jsi18n/')
-            self.assertNotContains(response, 'Choisir une heure')
+        with self.settings(LANGUAGE_CODE='fr'):
+            with translation.override('en-us'):
+                response = self.client.get('/test_admin/admin/jsi18n/')
+                self.assertNotContains(response, 'Choisir une heure')
 
     def testI18NLanguageNonEnglishFallback(self):
         """
         Makes sure that the fallback language is still working properly
         in cases where the selected language cannot be found.
         """
-        with self.settings(LANGUAGE_CODE='fr'), translation.override('none'):
-            response = self.client.get('/test_admin/admin/jsi18n/')
-            self.assertContains(response, 'Choisir une heure')
+        with self.settings(LANGUAGE_CODE='fr'):
+            with translation.override('none'):
+                response = self.client.get('/test_admin/admin/jsi18n/')
+                self.assertContains(response, 'Choisir une heure')
 
     def testL10NDeactivated(self):
         """
         Check if L10N is deactivated, the JavaScript i18n view doesn't
         return localized date/time formats. Refs #14824.
         """
-        with self.settings(LANGUAGE_CODE='ru', USE_L10N=False), translation.override('none'):
-            response = self.client.get('/test_admin/admin/jsi18n/')
-            self.assertNotContains(response, '%d.%m.%Y %H:%M:%S')
-            self.assertContains(response, '%Y-%m-%d %H:%M:%S')
+        with self.settings(LANGUAGE_CODE='ru', USE_L10N=False):
+            with translation.override('none'):
+                response = self.client.get('/test_admin/admin/jsi18n/')
+                self.assertNotContains(response, '%d.%m.%Y %H:%M:%S')
+                self.assertContains(response, '%Y-%m-%d %H:%M:%S')
 
     def test_disallowed_filtering(self):
         with patch_logger('django.security.DisallowedModelAdminLookup', 'error') as calls:
diff --git a/tests/admin_widgets/tests.py b/tests/admin_widgets/tests.py
index c75ffe5..d7a3f92 100644
--- a/tests/admin_widgets/tests.py
+++ b/tests/admin_widgets/tests.py
@@ -312,12 +312,13 @@ class AdminSplitDateTimeWidgetTest(DjangoTestCase):
     def test_localization(self):
         w = widgets.AdminSplitDateTime()
 
-        with self.settings(USE_L10N=True), translation.override('de-at'):
-            w.is_localized = True
-            self.assertHTMLEqual(
-                w.render('test', datetime(2007, 12, 1, 9, 30)),
-                '<p class="datetime">Datum: <input value="01.12.2007" type="text" class="vDateField" name="test_0" size="10" /><br />Zeit: <input value="09:30:00" type="text" class="vTimeField" name="test_1" size="8" /></p>',
-            )
+        with self.settings(USE_L10N=True):
+            with translation.override('de-at'):
+                w.is_localized = True
+                self.assertHTMLEqual(
+                    w.render('test', datetime(2007, 12, 1, 9, 30)),
+                    '<p class="datetime">Datum: <input value="01.12.2007" type="text" class="vDateField" name="test_0" size="10" /><br />Zeit: <input value="09:30:00" type="text" class="vTimeField" name="test_1" size="8" /></p>',
+                )
 
 
 class AdminURLWidgetTest(DjangoTestCase):
diff --git a/tests/defaultfilters/tests.py b/tests/defaultfilters/tests.py
index 6f84c14..ea8b7b3 100644
--- a/tests/defaultfilters/tests.py
+++ b/tests/defaultfilters/tests.py
@@ -647,21 +647,22 @@ class DefaultFiltersI18NTests(TransRealMixin, TestCase):
 
     def test_localized_filesizeformat(self):
         # NOTE: \xa0 avoids wrapping between value and unit
-        with self.settings(USE_L10N=True), translation.override('de', deactivate=True):
-            self.assertEqual(filesizeformat(1023), '1023\xa0Bytes')
-            self.assertEqual(filesizeformat(1024), '1,0\xa0KB')
-            self.assertEqual(filesizeformat(10*1024), '10,0\xa0KB')
-            self.assertEqual(filesizeformat(1024*1024-1), '1024,0\xa0KB')
-            self.assertEqual(filesizeformat(1024*1024), '1,0\xa0MB')
-            self.assertEqual(filesizeformat(1024*1024*50), '50,0\xa0MB')
-            self.assertEqual(filesizeformat(1024*1024*1024-1), '1024,0\xa0MB')
-            self.assertEqual(filesizeformat(1024*1024*1024), '1,0\xa0GB')
-            self.assertEqual(filesizeformat(1024*1024*1024*1024), '1,0\xa0TB')
-            self.assertEqual(filesizeformat(1024*1024*1024*1024*1024),
-                              '1,0\xa0PB')
-            self.assertEqual(filesizeformat(1024*1024*1024*1024*1024*2000),
-                              '2000,0\xa0PB')
-            self.assertEqual(filesizeformat(complex(1,-1)), '0\xa0Bytes')
-            self.assertEqual(filesizeformat(""), '0\xa0Bytes')
-            self.assertEqual(filesizeformat("\N{GREEK SMALL LETTER ALPHA}"),
-                              '0\xa0Bytes')
+        with self.settings(USE_L10N=True):
+            with translation.override('de', deactivate=True):
+                self.assertEqual(filesizeformat(1023), '1023\xa0Bytes')
+                self.assertEqual(filesizeformat(1024), '1,0\xa0KB')
+                self.assertEqual(filesizeformat(10*1024), '10,0\xa0KB')
+                self.assertEqual(filesizeformat(1024*1024-1), '1024,0\xa0KB')
+                self.assertEqual(filesizeformat(1024*1024), '1,0\xa0MB')
+                self.assertEqual(filesizeformat(1024*1024*50), '50,0\xa0MB')
+                self.assertEqual(filesizeformat(1024*1024*1024-1), '1024,0\xa0MB')
+                self.assertEqual(filesizeformat(1024*1024*1024), '1,0\xa0GB')
+                self.assertEqual(filesizeformat(1024*1024*1024*1024), '1,0\xa0TB')
+                self.assertEqual(filesizeformat(1024*1024*1024*1024*1024),
+                                  '1,0\xa0PB')
+                self.assertEqual(filesizeformat(1024*1024*1024*1024*1024*2000),
+                                  '2000,0\xa0PB')
+                self.assertEqual(filesizeformat(complex(1,-1)), '0\xa0Bytes')
+                self.assertEqual(filesizeformat(""), '0\xa0Bytes')
+                self.assertEqual(filesizeformat("\N{GREEK SMALL LETTER ALPHA}"),
+                                  '0\xa0Bytes')
diff --git a/tests/forms_tests/tests/test_fields.py b/tests/forms_tests/tests/test_fields.py
index b49d8f0..201adec 100644
--- a/tests/forms_tests/tests/test_fields.py
+++ b/tests/forms_tests/tests/test_fields.py
@@ -289,10 +289,11 @@ class FieldsTests(SimpleTestCase):
         n = 4.35
         self.assertFalse(f._has_changed(n, '4.3500'))
 
-        with translation.override('fr'), self.settings(USE_L10N=True):
-            f = FloatField(localize=True)
-            localized_n = formats.localize_input(n)  # -> '4,35' in French
-            self.assertFalse(f._has_changed(n, localized_n))
+        with translation.override('fr'):
+            with self.settings(USE_L10N=True):
+                f = FloatField(localize=True)
+                localized_n = formats.localize_input(n)  # -> '4,35' in French
+                self.assertFalse(f._has_changed(n, localized_n))
 
     # DecimalField ################################################################
 
@@ -401,10 +402,11 @@ class FieldsTests(SimpleTestCase):
         self.assertFalse(f._has_changed(d, '0.10'))
         self.assertTrue(f._has_changed(d, '0.101'))
 
-        with translation.override('fr'), self.settings(USE_L10N=True):
-            f = DecimalField(max_digits=2, decimal_places=2, localize=True)
-            localized_d = formats.localize_input(d)  # -> '0,1' in French
-            self.assertFalse(f._has_changed(d, localized_d))
+        with translation.override('fr'):
+            with self.settings(USE_L10N=True):
+                f = DecimalField(max_digits=2, decimal_places=2, localize=True)
+                localized_d = formats.localize_input(d)  # -> '0,1' in French
+                self.assertFalse(f._has_changed(d, localized_d))
 
     # DateField ###################################################################
 
diff --git a/tests/i18n/tests.py b/tests/i18n/tests.py
index d085e96..f002f06 100644
--- a/tests/i18n/tests.py
+++ b/tests/i18n/tests.py
@@ -1062,8 +1062,9 @@ class MultipleLocaleActivationTests(TransRealMixin, TestCase):
     def test_multiple_locale_filter(self):
         with translation.override('de'):
             t = Template("{% load i18n %}{{ 0|yesno:_('yes,no,maybe') }}")
-        with translation.override(self._old_language), translation.override('nl'):
-            self.assertEqual(t.render(Context({})), 'nee')
+        with translation.override(self._old_language):
+            with translation.override('nl'):
+                self.assertEqual(t.render(Context({})), 'nee')
 
     def test_multiple_locale_filter_deactivate(self):
         with translation.override('de', deactivate=True):
@@ -1082,8 +1083,9 @@ class MultipleLocaleActivationTests(TransRealMixin, TestCase):
     def test_multiple_locale(self):
         with translation.override('de'):
             t = Template("{{ _('No') }}")
-        with translation.override(self._old_language), translation.override('nl'):
-            self.assertEqual(t.render(Context({})), 'Nee')
+        with translation.override(self._old_language):
+            with translation.override('nl'):
+                self.assertEqual(t.render(Context({})), 'Nee')
 
     def test_multiple_locale_deactivate(self):
         with translation.override('de', deactivate=True):
@@ -1102,8 +1104,9 @@ class MultipleLocaleActivationTests(TransRealMixin, TestCase):
     def test_multiple_locale_loadi18n(self):
         with translation.override('de'):
             t = Template("{% load i18n %}{{ _('No') }}")
-        with translation.override(self._old_language), translation.override('nl'):
-            self.assertEqual(t.render(Context({})), 'Nee')
+        with translation.override(self._old_language):
+            with translation.override('nl'):
+                self.assertEqual(t.render(Context({})), 'Nee')
 
     def test_multiple_locale_loadi18n_deactivate(self):
         with translation.override('de', deactivate=True):
@@ -1122,8 +1125,9 @@ class MultipleLocaleActivationTests(TransRealMixin, TestCase):
     def test_multiple_locale_trans(self):
         with translation.override('de'):
             t = Template("{% load i18n %}{% trans 'No' %}")
-        with translation.override(self._old_language), translation.override('nl'):
-            self.assertEqual(t.render(Context({})), 'Nee')
+        with translation.override(self._old_language):
+            with translation.override('nl'):
+                self.assertEqual(t.render(Context({})), 'Nee')
 
     def test_multiple_locale_deactivate_trans(self):
         with translation.override('de', deactivate=True):
@@ -1142,8 +1146,9 @@ class MultipleLocaleActivationTests(TransRealMixin, TestCase):
     def test_multiple_locale_btrans(self):
         with translation.override('de'):
             t = Template("{% load i18n %}{% blocktrans %}No{% endblocktrans %}")
-        with translation.override(self._old_language), translation.override('nl'):
-            self.assertEqual(t.render(Context({})), 'Nee')
+        with translation.override(self._old_language):
+            with translation.override('nl'):
+                self.assertEqual(t.render(Context({})), 'Nee')
 
     def test_multiple_locale_deactivate_btrans(self):
         with translation.override('de', deactivate=True):
diff --git a/tests/logging_tests/tests.py b/tests/logging_tests/tests.py
index ef9f979..8ba4702 100644
--- a/tests/logging_tests/tests.py
+++ b/tests/logging_tests/tests.py
@@ -355,19 +355,20 @@ class SettingsConfigureLogging(TestCase):
         self.assertTrue(dictConfig.called)
 
 
-@override_settings(DEBUG=True)
 class SecurityLoggerTest(TestCase):
 
     urls = 'logging_tests.urls'
 
     def test_suspicious_operation_creates_log_message(self):
-        with patch_logger('django.security.SuspiciousOperation', 'error') as calls:
-            response = self.client.get('/suspicious/')
-            self.assertEqual(len(calls), 1)
-            self.assertEqual(calls[0], 'dubious')
+        with self.settings(DEBUG=True):
+            with patch_logger('django.security.SuspiciousOperation', 'error') as calls:
+                response = self.client.get('/suspicious/')
+                self.assertEqual(len(calls), 1)
+                self.assertEqual(calls[0], 'dubious')
 
     def test_suspicious_operation_uses_sublogger(self):
-        with patch_logger('django.security.DisallowedHost', 'error') as calls:
-            response = self.client.get('/suspicious_spec/')
-            self.assertEqual(len(calls), 1)
-            self.assertEqual(calls[0], 'dubious')
+        with self.settings(DEBUG=True):
+            with patch_logger('django.security.DisallowedHost', 'error') as calls:
+                response = self.client.get('/suspicious_spec/')
+                self.assertEqual(len(calls), 1)
+                self.assertEqual(calls[0], 'dubious')
diff --git a/tests/view_tests/tests/test_i18n.py b/tests/view_tests/tests/test_i18n.py
index 680cd25..cfee4f5 100644
--- a/tests/view_tests/tests/test_i18n.py
+++ b/tests/view_tests/tests/test_i18n.py
@@ -85,18 +85,20 @@ class JsI18NTests(TestCase):
         languages and you've set settings.LANGUAGE_CODE to some other language
         than English.
         """
-        with self.settings(LANGUAGE_CODE='es'), override('en-us'):
-            response = self.client.get('/views/jsi18n/')
-            self.assertNotContains(response, 'esto tiene que ser traducido')
+        with self.settings(LANGUAGE_CODE='es'):
+            with override('en-us'):
+                response = self.client.get('/views/jsi18n/')
+                self.assertNotContains(response, 'esto tiene que ser traducido')
 
     def test_jsi18n_fallback_language(self):
         """
         Let's make sure that the fallback language is still working properly
         in cases where the selected language cannot be found.
         """
-        with self.settings(LANGUAGE_CODE='fr'), override('fi'):
-            response = self.client.get('/views/jsi18n/')
-            self.assertContains(response, 'il faut le traduire')
+        with self.settings(LANGUAGE_CODE='fr'):
+            with override('fi'):
+                response = self.client.get('/views/jsi18n/')
+                self.assertContains(response, 'il faut le traduire')
 
     def testI18NLanguageNonEnglishDefault(self):
         """
@@ -105,9 +107,10 @@ class JsI18NTests(TestCase):
         is English and there is not 'en' translation available. See #13388,
         #3594 and #13726 for more details.
         """
-        with self.settings(LANGUAGE_CODE='fr'), override('en-us'):
-            response = self.client.get('/views/jsi18n/')
-            self.assertNotContains(response, 'Choisir une heure')
+        with self.settings(LANGUAGE_CODE='fr'):
+            with override('en-us'):
+                response = self.client.get('/views/jsi18n/')
+                self.assertNotContains(response, 'Choisir une heure')
 
     def test_nonenglish_default_english_userpref(self):
         """
@@ -126,9 +129,10 @@ class JsI18NTests(TestCase):
         Makes sure that the fallback language is still working properly
         in cases where the selected language cannot be found.
         """
-        with self.settings(LANGUAGE_CODE='fr'), override('none'):
-            response = self.client.get('/views/jsi18n/')
-            self.assertContains(response, 'Choisir une heure')
+        with self.settings(LANGUAGE_CODE='fr'):
+            with override('none'):
+                response = self.client.get('/views/jsi18n/')
+                self.assertContains(response, 'Choisir une heure')
 
 
 class JsI18NTestsMultiPackage(TestCase):
