1

JMeterで一連のWebサービステストを実行していますが、前のテストの正規表現エクストラクターが空の応答などのために値を抽出できない場合、テストをスキップする方法があるかどうか疑問に思いました。Ifコントローラーを使用する必要があることは理解していますが、条件として何を入力すればよいかわかりません。前のテストの正規表現は次のとおりです。

Reference Name: alarmid
Regular Expression: alarmStatus="raised" [^>]+ alarmId="(.+?)"

したがって、ステータスが「発生」のアラームIDが見つからない場合は、次のテストをスキップします。これは、$ {alarmid}がその引数であり、それ以外の場合は500でエラーになるためです。何か案は?前もって感謝します!

4

3 に答える 3

2

おそらく、応答アサーションIfControllerをj​​avascript条件で組み合わせて使用​​することができます${JMeterThread.last_sample_ok} (check if last sample succeeded)

以下のようなスキーマ:

サンプラー1
    応答アサーション-alarmStatus="raised"のalarmIdが応答に存在するかどうかを確認します。
    正規表現エクストラクタ-alarmIdを取得するためのエクストラクタ。
コントローラーの場合
条件=${JMeterThread.last_sample_ok}
    サンプラー2-引数として抽出されたalarmIdを取得するサンプラー。

対応するalarmIdが見つからない場合、応答アサーションはサンプラー1のステータスを「失敗」に設定します。コントローラーが「false」と評価される場合、サンプラー2はスキップされます。

より良い方法は次のようなもののようです:

  1. 正規表現エクストラクタの「デフォルト値」フィールドの設定値:(Default Value: NOT_FOUNDこの値は、正規表現が一致しない場合に設定されます)。
  2. IfControllerの条件としてalarmIdvarとデフォルト値のjavascript比較を使用します。"${alarmId}"!="NOT_FOUND"-Sampler2と等しくない場合が実行されます。

この場合、応答アサーションを使用する必要はありません。

于 2012-07-07T10:30:59.430 に答える
0

変数を使用できます。正規表現の結果を変数に保存してから、この変数をIFCONTROLLERで使用します。

変数の構文は

${myVariable}

これはJMeterのどこでも使用できます

于 2012-07-06T16:16:03.937 に答える
0

IFコントローラで、次を使用します。

"${alarmId}"  == "raised"
于 2012-07-07T08:40:47.197 に答える