テクめも

プログラミング関連のちょっとしたTipsなどを書いています。

Clickのテストで例外をキャッチしない

PythonのCLIフレームワークであるClickでは、テストツールも用意されており、容易にテストを書くことができます。

invokeを使えば、コマンドと引数を渡すことができますが、デフォルトでは例外をキャッチします。 通常は、exit_codeの値を比較すればよいのですが、テストを書いている途中とかでデバッグをするときは、どこで例外が発生したかがわかりません。

runner = CliRunner()
result = runner.invoke(cli, ["--option"])
assert result.exit_code == 0

そこで、catch_exceptionsをつけると例外をキャッチしないので、デバッグがしやすくなります。

result = runner.invoke(cli, ["--option"], catch_exceptions=False)