import unittest class FunnyStream(object): def __init__(self): self.buf = "" def __del__(self): self.close() def close(self): self.flush() def flush(self): print(self.buf.rstrip("\n")) self.buf = "" def write(self, str): self.buf += str class FunnyTestRunner(unittest.TextTestRunner): def __init__(self, **kwargs): super(FunnyTestRunner, self).__init__(stream=FunnyStream(), **kwargs) class test(unittest.TestCase): def test_one(self): self.assertTrue(True) def test_two(self): self.assertFalse(False) def test_three(self): self.fail("intentional failure") """This works: import unittest import testcase unittest.main(module=testcase) """ """This does not: import unittest import testcase unittest.main(module=testcase, testRunner=testcase.FunnyTestRunner, exit=False) """