2017-07-31 7 views
0

私は複数のテストファイルを実行するGUIを持っています。 すべてのテストは、GUIがスレッドから実行中のサブプロセスを使用して1つずつ実行するPythonファイルです。いつでもサブプロセスを終了させるにはどうすればいいですか?

GUIでは、ユーザーはテストを実行するマシンを停止することができます。 この目的とその目的のためにサブプロセスをどのようにkillするかを知っています。 Killing sub process that run inside a thread

今、別の問題があります。 テストは、整然としたやり方で閉じなければならない多くのインスタンスを開きます。 kill()メソッドを使用すると、すべてのインスタンスが閉じず、それ以上のテストを実行できません。 I.Eユーザーからの停止前にテストで使用したCOMポート。まだ占有されており、これ以上テストを実行できません。

唯一の救済策は、GUIを閉じてから始めることです。つまり、sys.exit()のように、すべてのインスタンスを閉じてもGUIが終了するのと同じ効果が得られます。 私は待機(タイムアウト)を使用しようとしましたが、私が間違って使用しない限り、それはトリックをしません。

テストで何らかのメソッドを呼び出すような種類の割り込みを使用することはできますか?それは規則的に閉じますか?

答えて

0

this solutionのようなものを使用して、アプリケーションを起動してテストを実行するサブプロセスを特定して終了する必要があります。このソリューションは、アプリケーションがより多くのテストを実行できるように、すべてのバックグラウンドプロセスを強制終了するというユースケースに特に適しているようです。

また、アプリケーションによって特定のシグナルが送信されたときに、それらを殺すことを可能にするテスト用のラッパーまたはデコレータを作成することもできますが、アプリケーションは開始されたすべてのサブプロセスを追跡する必要があります。テストがバックグラウンドで追加のサブプロセスを起動すると、すべてのプロセスを適切に終了させることができません。

関連する問題