File tree 2 files changed +36
-4
lines changed
2 files changed +36
-4
lines changed Original file line number Diff line number Diff line change @@ -295,12 +295,16 @@ def _disable_class_methods(cls):
295
295
if cls in _disabled_classmethods :
296
296
return
297
297
298
+ # Get the classmethod object (not the resulting bound method),
299
+ # otherwise inheritence will be broken when restoring.
300
+ # But fall back to bound method in case it is None in __dict__.
301
+ setUpClass = cls .__dict__ .get ('setUpClass' , cls .setUpClass )
302
+ tearDownClass = cls .__dict__ .get ('tearDownClass' , cls .tearDownClass )
303
+
298
304
_disabled_classmethods [cls ] = (
299
- # Get the classmethod object (not the resulting bound method),
300
- # otherwise inheritence will be broken when restoring.
301
- cls .__dict__ .get ('setUpClass' ),
305
+ setUpClass ,
302
306
_classmethod_is_defined_at_leaf (cls , 'setUpClass' ),
303
- cls . __dict__ . get ( ' tearDownClass' ) ,
307
+ tearDownClass ,
304
308
_classmethod_is_defined_at_leaf (cls , 'tearDownClass' ),
305
309
)
306
310
Original file line number Diff line number Diff line change @@ -337,6 +337,34 @@ def test_pass(self):
337
337
])
338
338
assert result .ret == 0
339
339
340
+ def test_setUpClass_leaf_but_not_in_dunder_dict (self , django_testdir ):
341
+ django_testdir .create_test_module ('''
342
+ from django.test import testcases
343
+
344
+ class CMSTestCase(testcases.TestCase):
345
+ pass
346
+
347
+ class FooBarTestCase(testcases.TestCase):
348
+
349
+ @classmethod
350
+ def setUpClass(cls):
351
+ print('FooBarTestCase.setUpClass')
352
+ super(FooBarTestCase, cls).setUpClass()
353
+
354
+ class TestContact(CMSTestCase, FooBarTestCase):
355
+
356
+ def test_noop(self):
357
+ print('test_noop')
358
+ ''' )
359
+
360
+ result = django_testdir .runpytest_subprocess ('-q' , '-s' )
361
+ result .stdout .fnmatch_lines ([
362
+ "*FooBarTestCase.setUpClass*" ,
363
+ "*test_noop*" ,
364
+ "1 passed in *" ,
365
+ ])
366
+ assert result .ret == 0
367
+
340
368
341
369
class TestCaseWithDbFixture (TestCase ):
342
370
pytestmark = pytest .mark .usefixtures ('db' )
You can’t perform that action at this time.
0 commit comments