class Empty(unittest.TestCase):
pass
+ class SetUpClassFailure(unittest.TestCase):
+ @classmethod
+ def setUpClass(cls):
+ super().setUpClass()
+ raise Exception
+ def testPass(self):
+ pass
+
class TestLoader(unittest.TestLoader):
"""Test loader that returns a suite containing the supplied testcase."""
out = stream.getvalue()
self.assertIn('\nNO TESTS RAN\n', out)
+ def test_ExitSetUpClassFailureSuite(self):
+ stream = BufferedWriter()
+ with self.assertRaises(SystemExit) as cm:
+ unittest.main(
+ argv=["setup_class_failure"],
+ testRunner=unittest.TextTestRunner(stream=stream),
+ testLoader=self.TestLoader(self.SetUpClassFailure))
+ self.assertEqual(cm.exception.code, 1)
+ out = stream.getvalue()
+ self.assertIn("ERROR: setUpClass", out)
+ self.assertIn("SetUpClassFailure", out)
+
class InitialisableProgram(unittest.TestProgram):
exit = False
testRunner = self.testRunner
self.result = testRunner.run(self.test)
if self.exit:
- if self.result.testsRun == 0 and len(self.result.skipped) == 0:
+ if not self.result.wasSuccessful():
+ sys.exit(1)
+ elif self.result.testsRun == 0 and len(self.result.skipped) == 0:
sys.exit(_NO_TESTS_EXITCODE)
- elif self.result.wasSuccessful():
- sys.exit(0)
else:
- sys.exit(1)
+ sys.exit(0)
main = TestProgram