Unittest-framework-signal-handling

提供:Dev Guides
移動先:案内検索

UnitTestフレームワーク-信号処理

テスト実行中のcontrol-Cのより効率的な処理は、 catchbreak パラメーターとともに、unittestの-c/-catchコマンドラインオプションによって提供されます。 キャッチブレーク動作を有効にすると、control-Cは現在実行中のテストの完了を許可し、テスト実行は終了し、これまでのすべての結果を報告します。 2番目のcontrol-cは、通常の方法でKeyboardInterruptを発生させます。

unittestハンドラーが呼び出されたが、signal.SIGINTハンドラーがインストールされていない場合、デフォルトハンドラーが呼び出されます。 これは通常、インストールされたハンドラを置き換えてそれに委譲するコードによって期待される動作になります。 unittest control-c処理を無効にする必要がある個々のテストでは、removeHandler()デコレータを使用できます。

次のユーティリティ関数は、テストフレームワーク内でcontrol-c処理機能を有効にします-

unittest.installHandler()

control-cハンドラーをインストールします。 signal.SIGINT を受信すると、登録されたすべての結果にTestResult.stop()が呼び出されます。

unittest.registerResult(result)

control-c処理のために TestResult オブジェクトを登録します。 結果を登録すると、それに対する弱い参照が格納されるため、結果がガベージコレクションされるのを防ぐことはできません。

unittest.removeResult(result)

登録済みの結果を削除します。 結果が削除されると、Control-cに応答してその結果オブジェクトでTestResult.stop()が呼び出されなくなります。

unittest.removeHandler(function = None)

引数なしで呼び出された場合、この関数は、control-cハンドラーがインストールされている場合、それを削除します。 この関数は、テストの実行中にハンドラーを一時的に削除するためのテストデコレーターとしても使用できます。

GUIテストランナー

unittestモジュールは、テストを対話的に検出および実行するためにインストールされます。 このユーティリティ、Pythonスクリプト「inittestgui.py」は、TKグラフィックツールキット用のPythonポートであるTkinterモジュールを使用します。 テストの検出と実行に使いやすいGUIを提供します。

Python unittestgui.py

実行テスト

[テストの検出]ボタンをクリックします。 テストを実行するディレクトリとモジュールを選択できる小さなダイアログボックスが表示されます。

検出テスト

最後に、開始ボタンをクリックします。 選択したパスとモジュール名からテストが検出され、結果ペインに結果が表示されます。

結果ペイン

個々のテストの詳細を表示するには、結果ボックスでテストを選択してクリックします-

個々のテストの詳細

Pythonのインストールでこのユーティリティが見つからない場合は、プロジェクトページhttp://pyunit.sourceforge.net/から入手できます。

同様に、wxpythonツールキットに基づくユーティリティも利用できます。