32

私はJMeterを単体テストツールとして使用しています。パラメーター化された呼び出しでは、応答の一部が500の内部サーバーエラーであると予想されます。BeanShellアサーションを使用して応答を確認しています。

応答に指定されたテキストが含まれている場合、500の内部サーバーエラーの一部を失敗としてマークしないようにします。500台のサーバーエラーはすべて障害としてマークされます。動作を変更することは可能ですか?

以下は、BeanShellアサーションからの抜粋です。

if (ResponseCode.equals("500")) {
    Failure = false;
    String respData = new String(ResponseData);

    if (! respData.contains("specific Text")) {
        Failure = true;
        FailureMessage = "500 Internal Server Error:  Unexpected Response.   " + 
            "Response Message: " + respData;
    }
}  

ありがとう、よろしく

4

4 に答える 4

40

UPD:以下の最もシンプルで「ネイティブ」なソリューションを見つけてください。


コードでトリッキーなことをしたい場合は、次のアプローチを使用してください。

JSR223アサーションのコードが500の場合は、 SampleResultにアクセスして変更し、ステータスを「FAIL」から「PASS」に変更するか、代わりにJSR223PostProcessorを使用します。すべてのユーザーがSampleResultオブジェクトにアクセスできます。

1.JSR223アサーション

if (ResponseCode.equals("500") == true) { 
    SampleResult.setResponseOK();  

    /* the same is 
    SampleResult.setSuccessful(true);
    SampleResult.setResponseCodeOK();
    SampleResult.setResponseMessageOK();
    */
}

2. JSR223 PostProcessor
代わりに-を 使用prevして、1つのポストプロセッサが接続されているサンプラーのSampleResultオブジェクトにアクセスします。

if (prev.getResponseCode().equals("500") == true) { 
    prev.setResponseOK();  

    /* the same is 
    prev.setSuccessful(true);
    prev.setResponseCodeOK();
    prev.setResponseMessageOK();
    */
}
于 2012-03-20T15:52:06.087 に答える
1

渡したいリクエストの後に「レスポンス アサーション」を追加し、「ステータスを無視」チェック ボックスをオンにします。

于 2015-12-23T17:33:27.370 に答える
-2

BeanShell アサーションを使用して、代わりに通常の Beanshell アサーション ステートメントで HTTP サンプラーを強制的に通過させ、次に通過/失敗させます。

if (ResponseCode.equals("500") == true) { 
    SampleResult.setResponseOK();  

    /* the same is 
    SampleResult.setSuccessful(true);
    SampleResult.setResponseCodeOK();
    SampleResult.setResponseMessageOK();
    */
}
String path = SampleResult.getURL().getPath();
if (!path.contains("anerror")) {
    Failure = true;
    FailureMessage = "URL Path: didn't contain \"anerror\"" +
        System.getProperty("line.separator") + "URL Path detected: " + path;
}
于 2015-06-23T21:58:40.587 に答える