File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree 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 ('\n ERROR: setUpClass (test.test_unittest.test_program.'
212+ 'Test_TestProgram.SetUpClassFailure)\n ' , out )
213+
194214
195215class InitialisableProgram (unittest .TestProgram ):
196216 exit = False
Original file line number Diff line number Diff line change @@ -47,6 +47,25 @@ def test_two(self):
4747 self .assertEqual (result .testsRun , 2 )
4848 self .assertEqual (len (result .errors ), 0 )
4949
50+ def test_setup_class_raising_error (self ):
51+ class Test (unittest .TestCase ):
52+ setUpCalled = 0
53+ @classmethod
54+ def setUpClass (cls ):
55+ Test .setUpCalled += 1
56+ unittest .TestCase .setUpClass ()
57+ raise Exception ("error" )
58+ def test_one (self ):
59+ pass
60+ def test_two (self ):
61+ pass
62+
63+ result = self .runTests (Test )
64+
65+ self .assertEqual (Test .setUpCalled , 1 )
66+ self .assertEqual (result .testsRun , 0 )
67+ self .assertEqual (len (result .errors ), 1 )
68+
5069 def test_teardown_class (self ):
5170 class Test (unittest .TestCase ):
5271 tearDownCalled = 0
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
You can’t perform that action at this time.
0 commit comments