2012-11-21 1 views
5

unittestを使用して、スクリプトで正しいコードがSystemExitになることをアサートします。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' 

答えて

8

SystemExitは、このように、それは属性error_codeを持っていない、BaseExceptionなくはStandardErrorから直接派生します。

error_codeの代わりに、属性codeを使用する必要があります。この例は次のようになります。

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

the_exception = cm.exception 
self.assertEqual(the_exception.code, 3) 
関連する問題