ユニットテストでメソッドが sys.exit() を呼び出すことをアサートすることは可能ですか? 質問する

ユニットテストでメソッドが sys.exit() を呼び出すことをアサートすることは可能ですか? 質問する

Python 2.7のメソッドで時々呼び出される

sys.exit(1)

適切な条件が満たされたときにこのコード行が呼び出されることを検証する単体テストを作成することは可能ですか?

ベストアンサー1

はい。sys.exitを上げるSystemExitので、確認することができますassertRaises:

with self.assertRaises(SystemExit):
    your_method()

のインスタンスには、提案された終了ステータスに設定されたSystemExit属性がありcode、 によって返されるコンテキスト マネージャーには、assertRaisesキャッチされた例外インスタンスが として含まれるためexception、終了ステータスの確認は簡単です。

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

self.assertEqual(cm.exception.code, 1)

 

sys.exit ドキュメント:

Python を終了します。これはSystemExit例外を発生させることによって実装されます... 外部レベルで終了の試行を傍受することが可能です。

おすすめ記事