File tree Expand file tree Collapse file tree 3 files changed +41
-2
lines changed Expand file tree Collapse file tree 3 files changed +41
-2
lines changed Original file line number Diff line number Diff line change @@ -563,8 +563,11 @@ def run(self, result=None):
563563 finally :
564564 result .stopTest (self )
565565 return
566- expecting_failure = getattr (testMethod ,
567- "__unittest_expecting_failure__" , False )
566+ expecting_failure_method = getattr (testMethod ,
567+ "__unittest_expecting_failure__" , False )
568+ expecting_failure_class = getattr (self ,
569+ "__unittest_expecting_failure__" , False )
570+ expecting_failure = expecting_failure_class or expecting_failure_method
568571 outcome = _Outcome (result )
569572 try :
570573 self ._outcome = outcome
Original file line number Diff line number Diff line change @@ -120,6 +120,39 @@ def test_die(self):
120120 self .assertEqual (result .expectedFailures [0 ][0 ], test )
121121 self .assertTrue (result .wasSuccessful ())
122122
123+ def test_expected_failure_with_wrapped_class (self ):
124+ @unittest .expectedFailure
125+ class Foo (unittest .TestCase ):
126+ def test_1 (self ):
127+ self .assertTrue (False )
128+
129+ events = []
130+ result = LoggingResult (events )
131+ test = Foo ("test_1" )
132+ test .run (result )
133+ self .assertEqual (events ,
134+ ['startTest' , 'addExpectedFailure' , 'stopTest' ])
135+ self .assertEqual (result .expectedFailures [0 ][0 ], test )
136+ self .assertTrue (result .wasSuccessful ())
137+
138+ def test_expected_failure_with_wrapped_subclass (self ):
139+ class Foo (unittest .TestCase ):
140+ def test_1 (self ):
141+ self .assertTrue (False )
142+
143+ @unittest .expectedFailure
144+ class Bar (Foo ):
145+ pass
146+
147+ events = []
148+ result = LoggingResult (events )
149+ test = Bar ("test_1" )
150+ test .run (result )
151+ self .assertEqual (events ,
152+ ['startTest' , 'addExpectedFailure' , 'stopTest' ])
153+ self .assertEqual (result .expectedFailures [0 ][0 ], test )
154+ self .assertTrue (result .wasSuccessful ())
155+
123156 def test_expected_failure_subtests (self ):
124157 # A failure in any subtest counts as the expected failure of the
125158 # whole test.
Original file line number Diff line number Diff line change @@ -75,6 +75,9 @@ Core and Builtins
7575Library
7676-------
7777
78+ - Issue #21112: Fix regression in unittest.expectedFailure on subclasses.
79+ Patch from Berker Peksag.
80+
7881- Issue #24764: cgi.FieldStorage.read_multi() now ignores the Content-Length
7982 header in part headers. Patch written by Peter Landry and reviewed by Pierre
8083 Quentel.
You can’t perform that action at this time.
0 commit comments