0

Windows で Python スクリプトからいくつかのシェル テスト スクリプトを実行しています。シェル スクリプトは、さまざまなモジュールの機能をテストしています。

私が直面した問題は、一部のスクリプトがハングする可能性があることです。このために、各スクリプトにタイムアウトを追加しました。このタイムアウトにはデフォルト値があります。ただし、このタイムアウト値は bash スクリプトで変更できます - bash 関数 ( SetMaxTime ) から - SetMaxTime を変更できます。

デフォルト値が使用されている場合、Python でその期間待機し、bash スクリプトが完了していない場合は、タイムアウトのためにそのテストが失敗したと見なします。

問題は、タイムアウトのデフォルト値が bash から変更された場合です。Pythonからbashスクリプト(mingwで実行)と通信する方法はありますか?

注: スクリプトは Windows で実行されます。

4

2 に答える 2

1

スクリプトがタイムアウト値を設定するときに、stdoutに情報を出力するようにします。例えば。タイムアウトが変更されると、スクリプトは次のように出力できます。

TIMEOUT_SECONDS=2

スクリプトを呼び出すPythonコードで、呼び出されたスクリプトの出力でこのマーカーを探し、それに応じてテストタイムアウトを調整します。

このためには、subprocess.Popenメソッドを使用してスクリプトを呼び出し、 PIPEstdoutのオプションを指定することをお勧めします。次に、テストの実行中にサブプロセスのstdout属性を読み取り、スクリプトからの出力を探してTIMEOUT_SECONDS=xxx、タイムアウト期間を調整する必要があります。

于 2012-08-27T11:45:47.053 に答える
1

ファイルまたはファイルのペアから読み書きするだけで、それらの間で通信できることを確認してください(1つはPythonが書き込み、bashスクリプトは読み取り、もう1つはその逆の状況用です)。

于 2012-08-27T11:31:30.300 に答える