3

外部機器をテストするために python unittest フレームワークを使用しています。この特定の使用例では、Python に数日かかる耐久性テストを実行してもらいたいと思っています。(1 回のテストには数分しかかかりませんが、非常に頻繁に繰り返されます。)

このシナリオでは、テストを適切に停止し、後で再開または再開できるようにしたいと考えています。後で再起動しても問題ありませんが、現時点では適切に停止する手段がありません。

優雅な停止によって、私は次のようなものを想定しています: を押すCtrl-Cと、最後のテストが終了し、結果が返されます。

これを達成するための組み込みの方法はありますか?そうでない場合は、どうすればそれを達成できますか?

4

2 に答える 2

4

unittestコマンドライン ドキュメント を確認してください。

テスト実行中のControl-Cは、現在のテストが終了するのを待ってから、それまでのすべての結果を報告します。2 番目の control-C は、通常の KeyboardInterrupt 例外を発生させます。

KeyboardInterruptしたがって、これまでの結果が報告された後、例外をキャッチして次のテストをスリープ ループに入れることができます。その後、スリープ ループはさらにキーが押されるのを待って、テスト全体を中止するか続行することができます。

于 2012-11-14T15:54:50.780 に答える
3

unittest のドキュメントをよく見て解決策を見つけました。

unittest.installHandler()

Ctrl-C のシグナルハンドラーがインストールされ、すべての結果が次のようになります。

unittest.registerResult(result)

Ctrl-C の場合は正常に終了します。これはまさに私が必要としていたものです。

于 2012-11-14T15:49:05.813 に答える