JMeterのBeanShellのアサーションを使用して

BeanShellのプロフィール

BeanShellのは、Java構文スクリプト言語のセットのようなのJMeterの様々な構成要素、でBeanShellの図形を有する使用することです:?

  • タイマー:BeanShellのタイマー
  • プリプロセッサ:BeanShellのプリプロセッサ
  • サンプラー:BeanShellのサンプラー
  • ポストプロセッサ:BeanShellのポストプロセッサ
  • アサーション:BeanShellのアサート
  • リスナー:BeanShellのリスナー

あなたはBeanShellのを介してデータ、環境変数、または応答データ処理と、より柔軟な判断を要求することができます。

組み込み変数やメソッドいくつかのデフォルトを持っているBeanShellのは、ユーザーがこれらの変数によって、JMeterのと対話することができ、例えば:

  • 印刷:印刷情報(stdoutに出力情報)を非GUIモード
  • ログ:ログに出力した情報(ファイル)
    • log.debu( "デバッグ情報")
    • log.info( "応答ステータスコード" +にResponseCode)
    • log.warn( "警告")
    • log.error( "エラーメッセージ")
  • ResponseCode:レスポンスのステータスコード(文字列タイプ)
  • ResponseHeaders:レスポンスヘッダ(文字列型)
  • 前:現在のリクエストの結果を取得します。
    • prew.getResponseDataAsString():フェッチ応答データ本体(文字列タイプ)
    • prew.getResponseCodeは():ステータスコードを取得し(にResponseCodeと、文字列型)
  • varsは:動作して変数のJMeter
    • 文字列VAR1 = vars.get(「変数名」):変数の値を取得します(String型とします)
    • vars.put(「変数名」変数の値):変数の値を設定します
  • 小道具:Operation属性のJMeter
    • props.get(文字列、文字列)の属性を取得することができるJMeterの生成されました
    • props.put(文字列、文字列)のJMeterを作成し、更新することができますプロパティ
  • CTX:(すべての情報が利用可能)現在のスレッドのコンテキストデータを取得します。
    • ctx.getVariables(「変数名」):変数の値を取得します(vars.getで())
    • ctx.setVariables( "変数名"、 "変数値"):変数を設定します((vars.putで))
    • ctx.getProperties( "プロパティ名"):プロパティの値を取得します(props.getで())
    • ctx.setProperties( "属性名"、 "プロパティ値"):設定したプロパティ(同じprops.put())
    • ctx.getPreviousResult():現在の要求を取得し、同じ結果(PREV)
    • ctx.getCurrentSampler():現在のサンプラーを取得します。
    • ctx.getPreviousSampler():GET Aサンプラー前
    • ctx.getThreadNum():スレッド数を取得します。
    • ctx.getThreadGroup():スレッドグループを取得します。
    • 。CtxのgetThread():現在のスレッドを取得します
    • ctx.getEngineは():エンジンを取得します。
    • ctx.isSamplingStarted():サンプラーを有効にするかどうかを判断します
    • ctx.isRecording():レコードを開くかどうかを判断します
    • ctx.getSamplerContextは():山下サンプラーテキストデータを取得します。

詳細なAPIのCTXを参照してください:JMeterのコンテキストを

BeanShellのアサーション

結合可変失敗= FALSEまたは障害によって決定された場合BeanShellのアサーションは、それぞれ場合、真のかどうかをアサートによって設定されている=、にResponseCode、ResponseHeadersボリュームデータに対する応答ステータスコードのpre.getResponseDataAsString()は、文字列形式、応答ヘッダ、によって得ることができますセット障害が= trueの場合、あなたはまた、障害の原因を設定するFailureMessageを設定することができます。

ステータスコードアサート

//状态码断言
log.info("状态码:" + ResponseCode);
if(ResponseCode.equals("200")){ 
    Failure=false;
}
else{
    Failure=true;
    FailureMessage="响应状态码非200";  //指定失败原因
}

注:唯一の二重引用符文字列を使用するには、文字列の使用に等しい「」.equals(「」)

特定の文字備えることに応答して

//获取响应数据
String response = prev.getResponseDataAsString();
log.info("响应体:" + response);
//响应数据包含
if(response.contains("登录成功")){
    Failure=false;
}
else{
    Failure=true;
    FailureMessage="响应数据不包含登录成功";
}

抽出とJSONレスポンスアサート本体フィールド

StringオブジェクトとJSONの操作へのレスポンスボディは、次のアドレスをダウンロードし、追加のjarパッケージを必要とする、またはGSON org.json使用することができます。

例えばjson.jarに、次のJMeter / libディレクトリににそれをダウンロードした後、JMeterを再起動し、次のように、BeanShellのアサートを追加します。

//JSON响应断言
import org.json.*;   //导入org.json包

String response = prev.getResponseDataAsString();  //获取响应数据
JSONObject responseJson = new JSONObject(response);  //转为JSON对象

String message = responseJson.getString("message"); 
log.info("响应message字段:" + message);

if(message.equals("成功")){
    Failure=false;
}
else{
    Failure=true;
    FailureMessage="响应message字段非成功";
}

オブジェクトJSONObjectのgetString()メソッド、また支持体に加え

  • getBoolean(「フィールド名」):ブールフィールドの値を取得します。
  • getInt(「フィールド名」):int型フィールドの値を取得します。
  • GetLong(「フィールド名」):長整数フィールドの値を取得します。
  • GetDoubleを(「フィールド名」)O:倍精度タイプのフィールド値を取得します。
  • getJSONObject( "フィールド名"):ネストされたオブジェクトのTypeフィールドの値を取得し、JSONObjectタイプ
  • getJSONArray(「フィールド名」):、ネストされた配列の型を取得しJSONArrayタイプ

レスポンスヘッダ解析で

文字列型元々応答ヘッダは、応答ヘッダを分割してトラバースタイプマップ抽出項目に組み立てることができます

import java.util.HashMap;
import java.util.Map;

//将字符串用换行符 截取为adc数组
String [] headersList = ResponseHeaders.split("\n");

Map headersMap = new HashMap();   //创建HashMap来从新组装headers

for(int i=1;i<headersList.length;i++){
    String [] itemList=headersList[i].split(": ");   // 将每一条Headerr项按冒号分割
    headersMap.put((itemList[0]), itemList[1]);   // 分键值放入HashMap
}

String contentType = headersMap.get("Content-Type");   // 提取相应项
log.info("响应Content-Type:" + contentType)

おすすめ

転載: www.cnblogs.com/superhin/p/12359794.html
おすすめ