File tree Expand file tree Collapse file tree 3 files changed +25
-4
lines changed Expand file tree Collapse file tree 3 files changed +25
-4
lines changed Original file line number Diff line number Diff line change @@ -75,6 +75,14 @@ def testUnexpectedSuccess(self):
7575 class Empty (unittest .TestCase ):
7676 pass
7777
78+ class SetUpClassFailure (unittest .TestCase ):
79+ @classmethod
80+ def setUpClass (cls ):
81+ super ().setUpClass ()
82+ raise Exception
83+ def testPass (self ):
84+ pass
85+
7886 class TestLoader (unittest .TestLoader ):
7987 """Test loader that returns a suite containing the supplied testcase."""
8088
@@ -191,6 +199,18 @@ def test_ExitEmptySuite(self):
191199 out = stream .getvalue ()
192200 self .assertIn ('\n NO TESTS RAN\n ' , out )
193201
202+ def test_ExitSetUpClassFailureSuite (self ):
203+ stream = BufferedWriter ()
204+ with self .assertRaises (SystemExit ) as cm :
205+ unittest .main (
206+ argv = ["setup_class_failure" ],
207+ testRunner = unittest .TextTestRunner (stream = stream ),
208+ testLoader = self .TestLoader (self .SetUpClassFailure ))
209+ self .assertEqual (cm .exception .code , 1 )
210+ out = stream .getvalue ()
211+ self .assertIn ("ERROR: setUpClass" , out )
212+ self .assertIn ("SetUpClassFailure" , out )
213+
194214
195215class InitialisableProgram (unittest .TestProgram ):
196216 exit = False
Original file line number Diff line number Diff line change @@ -269,12 +269,12 @@ def runTests(self):
269269 testRunner = self .testRunner
270270 self .result = testRunner .run (self .test )
271271 if self .exit :
272- if self .result .testsRun == 0 and len (self .result .skipped ) == 0 :
272+ if not self .result .wasSuccessful ():
273+ sys .exit (1 )
274+ elif self .result .testsRun == 0 and len (self .result .skipped ) == 0 :
273275 sys .exit (_NO_TESTS_EXITCODE )
274- elif self .result .wasSuccessful ():
275- sys .exit (0 )
276276 else :
277- sys .exit (1 )
277+ sys .exit (0 )
278278
279279
280280main = TestProgram
Original file line number Diff line number Diff line change 1+ Use exitcode ``1 `` instead of ``5 `` if :func: `unittest.TestCase.setUpClass ` raises an exception
You can’t perform that action at this time.
0 commit comments