try except
Python のモジュールの関数定義の外で定義されているブロックの Python 3 unittest の書き方を知りたいです。
次package/module.py
のようなコード ブロックがあるとします。
OS のインポート
try:
CONSTANT = os.environ['NOT_EXISTING_KEY']
except KeyError:
CONSTANT = False
finally:
del os
(実際のコードは気にしないでください。os.getenv('NOT_EXISTING_KEY', False)
この特定のケースで使用できることはわかっています。私が興味を持っているのは、モジュール内(関数外)の try-except ブロックが期待どおりに動作することを実際にテストすることです。
package.module.CONSTANT
期待値に設定されていることを確認する単体テストを作成するにはどうすればよいですか?
unittest ファイル (私は pytest を使用) には、次のようなものがあります。
from package.module import CONSTANT
def test_constant_true():
assert CONSTANT == 'expected_value'
try ブロックが正しく実行された場合、CONSTANT が期待どおりであることをテストします。
ただし、try ブロックの os.environ で例外が発生し、CONSTANT が False に設定されていることをテストできるように、インポート機構をモックする方法はわかりません。
どうやってやるの?