import unittest class TestExceptionStringRoundTrip(unittest.TestCase): def assertStrCast(self, ExceptionClass): s = "hello" self.assertEqual(s, str(ExceptionClass(s))) for builtin in dir(__builtins__): if builtin.endswith('Error') or builtin.endswith('Exception'): def _test(self, ExceptionClass=builtin): self.assertStrCast(getattr(__builtins__, ExceptionClass)) setattr(TestExceptionStringRoundTrip, "test%s" % builtin, _test) if __name__ == "__main__": unittest.main()