@@ -179,10 +179,13 @@ def setUpClass(cls):
179
179
if cls ._overridden_settings :
180
180
cls ._cls_overridden_context = override_settings (** cls ._overridden_settings )
181
181
cls ._cls_overridden_context .enable ()
182
+ cls .addClassCleanup (cls ._cls_overridden_context .disable )
182
183
if cls ._modified_settings :
183
184
cls ._cls_modified_context = modify_settings (cls ._modified_settings )
184
185
cls ._cls_modified_context .enable ()
186
+ cls .addClassCleanup (cls ._cls_modified_context .disable )
185
187
cls ._add_databases_failures ()
188
+ cls .addClassCleanup (cls ._remove_databases_failures )
186
189
187
190
@classmethod
188
191
def _validate_databases (cls ):
@@ -227,17 +230,6 @@ def _remove_databases_failures(cls):
227
230
method = getattr (connection , name )
228
231
setattr (connection , name , method .wrapped )
229
232
230
- @classmethod
231
- def tearDownClass (cls ):
232
- cls ._remove_databases_failures ()
233
- if hasattr (cls , '_cls_modified_context' ):
234
- cls ._cls_modified_context .disable ()
235
- delattr (cls , '_cls_modified_context' )
236
- if hasattr (cls , '_cls_overridden_context' ):
237
- cls ._cls_overridden_context .disable ()
238
- delattr (cls , '_cls_overridden_context' )
239
- super ().tearDownClass ()
240
-
241
233
def __call__ (self , result = None ):
242
234
"""
243
235
Wrapper around default __call__ method to perform common Django test
@@ -1221,14 +1213,12 @@ def setUpClass(cls):
1221
1213
call_command ('loaddata' , * cls .fixtures , ** {'verbosity' : 0 , 'database' : db_name })
1222
1214
except Exception :
1223
1215
cls ._rollback_atomics (cls .cls_atomics )
1224
- cls ._remove_databases_failures ()
1225
1216
raise
1226
1217
pre_attrs = cls .__dict__ .copy ()
1227
1218
try :
1228
1219
cls .setUpTestData ()
1229
1220
except Exception :
1230
1221
cls ._rollback_atomics (cls .cls_atomics )
1231
- cls ._remove_databases_failures ()
1232
1222
raise
1233
1223
for name , value in cls .__dict__ .items ():
1234
1224
if value is not pre_attrs .get (name ):
@@ -1634,10 +1624,6 @@ def __init_subclass__(cls, /, **kwargs):
1634
1624
@classmethod
1635
1625
def setUpClass (cls ):
1636
1626
cls ._lockfile = open (cls .lockfile )
1627
+ cls .addClassCleanup (cls ._lockfile .close )
1637
1628
locks .lock (cls ._lockfile , locks .LOCK_EX )
1638
1629
super ().setUpClass ()
1639
-
1640
- @classmethod
1641
- def tearDownClass (cls ):
1642
- super ().tearDownClass ()
1643
- cls ._lockfile .close ()
0 commit comments