pytest-タイムアウトが特定のタイムアウト後にテストを終了しますpy.testためのプラグインです その際には、一度に実行されているすべてのスレッドのスタックダンプを取得します。とき例えばこれは便利です継続的インテグレーション(CI)サーバーの下のテストを実行している。
の使用法の
経由のインストール:
pytestタイムアウトをインストールピップ
その後、コマンドラインから、プラグインを有効にします。
py.test -pタイムアウト
以上便利にテストモジュールまたはconftest.py内から:
pytest_pluginsの= 'タイムアウト」
あなたはタイムアウトを秒単位で設定します--timeoutパラメータを使用してタイムアウトを変更することができます。
<強い>は、のしくみ
このプラグインは、次のいずれかの方法で動作します。システムはSIGALRMシグナルをサポートしている場合、アラームが時のテストが開始されるスケジュールされ、それが終了するとキャンセルされました。アラームがテスト中に期限が切れた場合、シグナルハンドラはstderrに実行されている他のスレッドのスタックをダンプした後にテストを中断するpytest.fail()を使用します。
システムはSIGALRMをサポートしていないか、--nosigalrmオプションが使用された場合、タイマースレッドが代わりに使用されます。もう一度、それはos._exit(1)を使用して、全体のpy.testプロセスを終了する前にstderrにすべてのスレッドのスタックをダンプします期限切れになる前にこのタイマーがキャンセルされていない場合。
SIGALRM方法の欠点は、信号がテストフレームワークによって使用されることである。この信号はテスト対象のコードで使用されている場合は、--nosigalrmオプションを使用する必要があります。タイマースレッドの制限は、しかし、各実行されたテストと1タイムアウト後に全体のプロセスが停止され、それ以上のテストが実行されないという事実のためにスレッドを作成する余分なオーバーヘッドでます。
のは何ですかこのリリースで新しいの
- はタイムアウトを指定する方法としてPYTEST_TIMEOUT環境変数を追加しました(2問題#を閉じる)します。 。
- より柔軟なマーカー引数の解析:。あなたは今、位置引数を使用するメソッドを指定することができます。
- プラグインはデフォルトで有効になりました。マーカーが機能するように、単に設定ファイルまたはコマンドラインでタイムアウト= 0を指定する必要はもうありません。
のバージョン0.2のの新機能は次のとおりです。
- @pytestを使用してタイムアウト遅延を修正するためのマーカーを追加します。 .timeout(N)構文、初期コードのためのローランBrackのおかげます。
- タイムアウトマーカーはメソッドのキーワード引数を使用して、タイムアウト方法を選択することができます。
- eventletとgeventのために将来の証拠サポートへ=スレッドを--methodする--nosigalrmオプションの名前を変更します。ヒントのロニーPfannschmidtに感謝します。
- 設定ファイルにタイムアウトとtimeout_method項目を追加します。ヒントのためのホルガーKrekelとロニーPfannschmidtに感謝します。
- のpython 2.6、2.7および3.2のためにテストされた(固定)します。
あなたはiniファイルを使用してプラグインを有効にして設定できるように
の要件の
- のPythonます。
- py.testます。
コメントが見つかりません