File tree 2 files changed +31
-3
lines changed
2 files changed +31
-3
lines changed Original file line number Diff line number Diff line change @@ -268,8 +268,8 @@ def _classmethod_is_defined_at_leaf(cls, method_name):
268
268
super_method = None
269
269
270
270
for base_cls in cls .__mro__ [1 :]: # pragma: no branch
271
- if hasattr ( base_cls , method_name ):
272
- super_method = getattr ( base_cls , method_name )
271
+ super_method = base_cls . __dict__ . get ( method_name )
272
+ if super_method is not None :
273
273
break
274
274
275
275
assert super_method is not None , (
@@ -297,7 +297,7 @@ def _disable_class_methods(cls):
297
297
298
298
_disabled_classmethods [cls ] = (
299
299
# Get the classmethod object (not the resulting bound method),
300
- # otherwise inheritence will be broken when restoring.
300
+ # otherwise inheritance will be broken when restoring.
301
301
cls .__dict__ .get ('setUpClass' ),
302
302
_classmethod_is_defined_at_leaf (cls , 'setUpClass' ),
303
303
cls .__dict__ .get ('tearDownClass' ),
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*" ,
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