@@ -179,10 +179,13 @@ def setUpClass(cls):
179179 if cls ._overridden_settings :
180180 cls ._cls_overridden_context = override_settings (** cls ._overridden_settings )
181181 cls ._cls_overridden_context .enable ()
182+ cls .addClassCleanup (cls ._cls_overridden_context .disable )
182183 if cls ._modified_settings :
183184 cls ._cls_modified_context = modify_settings (cls ._modified_settings )
184185 cls ._cls_modified_context .enable ()
186+ cls .addClassCleanup (cls ._cls_modified_context .disable )
185187 cls ._add_databases_failures ()
188+ cls .addClassCleanup (cls ._remove_databases_failures )
186189
187190 @classmethod
188191 def _validate_databases (cls ):
@@ -227,17 +230,6 @@ def _remove_databases_failures(cls):
227230 method = getattr (connection , name )
228231 setattr (connection , name , method .wrapped )
229232
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-
241233 def __call__ (self , result = None ):
242234 """
243235 Wrapper around default __call__ method to perform common Django test
@@ -1221,14 +1213,12 @@ def setUpClass(cls):
12211213 call_command ('loaddata' , * cls .fixtures , ** {'verbosity' : 0 , 'database' : db_name })
12221214 except Exception :
12231215 cls ._rollback_atomics (cls .cls_atomics )
1224- cls ._remove_databases_failures ()
12251216 raise
12261217 pre_attrs = cls .__dict__ .copy ()
12271218 try :
12281219 cls .setUpTestData ()
12291220 except Exception :
12301221 cls ._rollback_atomics (cls .cls_atomics )
1231- cls ._remove_databases_failures ()
12321222 raise
12331223 for name , value in cls .__dict__ .items ():
12341224 if value is not pre_attrs .get (name ):
@@ -1634,10 +1624,6 @@ def __init_subclass__(cls, /, **kwargs):
16341624 @classmethod
16351625 def setUpClass (cls ):
16361626 cls ._lockfile = open (cls .lockfile )
1627+ cls .addClassCleanup (cls ._lockfile .close )
16371628 locks .lock (cls ._lockfile , locks .LOCK_EX )
16381629 super ().setUpClass ()
1639-
1640- @classmethod
1641- def tearDownClass (cls ):
1642- super ().tearDownClass ()
1643- cls ._lockfile .close ()
0 commit comments