6

我正在使用unittest来断言我的脚本引发了正确的SystemExit代码。

基于来自http://docs.python.org/3.3/library/unittest.html#unittest.TestCase.assertRaises的示例

with self.assertRaises(SomeException) as cm:
    do_something()

the_exception = cm.exception
self.assertEqual(the_exception.error_code, 3)

我编码了这个:

with self.assertRaises(SystemExit) as cm:
    do_something()

the_exception = cm.exception
self.assertEqual(the_exception.error_code, 3)

但是,这不起作用。出现以下错误

AttributeError: 'SystemExit' object has no attribute 'error_code'
4

1 回答 1

15

SystemExit直接派生自 BaseException 而不是 StandardError,因此它没有属性error_code

而不是error_code你必须使用属性code。该示例如下所示:

with self.assertRaises(SystemExit) as cm:
    do_something()

the_exception = cm.exception
self.assertEqual(the_exception.code, 3)
于 2012-11-21T10:55:29.713 回答