1. ホーム
  2. python

[解決済み] あるメソッドが sys.exit() を呼び出すことをユニットテストが主張することは可能ですか?

2022-10-12 23:19:37

質問

Python 2.7 のメソッドで、時々

sys.exit(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 例外を発生させることで実装されています。