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は、StandardErrorではなくBaseExceptionから直接派生するため、属性はありません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 に答える