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;
}
}
ありがとう、よろしく
UPD:以下の最もシンプルで「ネイティブな」ソリューションを見つけてください:
コードでトリッキーなことをしたい場合は、次のアプローチを使用してください。
アクセスし、変更 SampleResultJSR223アサーション からコードが500の場合、ステータスを「FAIL」から「PASS」に変更するか、または JSR223 PostProcessor を使用します。代わりに-それらはすべて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();
*/
}
別の可能な解決策は、サンプラーに追加された「無視するステータス」フラグをオンにして Response Assertion を使用することです。
ステータスを無視
ステータスを最初に成功に設定するようにJMeterに指示します。サンプルの全体的な成功は、アサーションの結果と既存の応答ステータスを組み合わせることによって決定されます。 [ステータスを無視]チェックボックスが選択されている場合、アサーションを評価する前に、レスポンスステータスが強制的に成功します。
4xxおよび5xxの範囲のステータスを持つHTTP応答は、通常、失敗したと見なされます。 [ステータスを無視]チェックボックスを使用して、さらにチェックを実行する前にステータスを成功に設定できます。これにより、以前のアサーションエラーをクリアする効果があることに注意してください。なので、これが最初のアサーションでのみ設定されていることを確認してください。
通過させたいリクエストの後に「Response Assertion」を追加し、「Ignore Status」チェックボックスをチェックします。