1. 程式人生 > >Jmeter Web 性能測試入門 (六):Jmeter 解析 response 並傳遞 value

Jmeter Web 性能測試入門 (六):Jmeter 解析 response 並傳遞 value

pre 數據 put -c beanshell shel val sed ima

解析response中的內容,並把獲取到的value傳遞到後續的request中,常用的方法就是在想要解析response的request上添加後置處理器
本章介紹兩種常用的組件

  • BeanShell PostProcessor
  • JSON Extractor
添加後置處理器:BeanShell PostProcessor
  • 獲取response中的字符串,並對內容進行判斷,當response中包含“The wait operation timed out”或者“Oops. Something went wrong ... sorry”時,都認為該request的response不正確
    String response = prev.getResponseDataAsString();
    String code = prev.getResponseCode();
    log.info("Respnse is " + response);
    log.info(code);
    int result1 = response.indexOf("The wait operation timed out");
    int result2 = response.indexOf("Oops. Something went wrong ... sorry");
    if(code == "200" && result1>=0 || result2>=0){
    FailureMessage = "OK,check current";
    }
    else{
    Failure = true;
    FailureMessage = "ERROR,check error";
    }

  • 解析返回的Jason數據,獲取name字段的值賦給變量result

{“body”:{“apps”:[{“name”:”111”},{“name”:”222”}]}}

import org.json.*;
腳本中的導入的json包需要自己去網絡下載後放到\lib\ext下

String response_data = prev.getResponseDataAsString();
JSONObject data_obj = new JSONObject(response_data);
String apps_str = data_obj.get("body").get("apps").toString();
JSONArray apps_array = new JSONArray(apps_str);
String[] result = new String[apps_array.length()];
for(int i=0;i<apps_array.length();i++){
JSONObject app_obj = new JSONObject(apps_array.get(i).toString());
String name = app_obj.get("name").toString();
result[i] = name;
}
vars.put("result", Arrays.toString(result));

添加後置處理器:JSON Extractor

解析返回的Jason數據,獲取name字段的值帶入參數到後邊的request中

{“body”:{“apps”:[{“name”:”111”},{“name”:”222”}]}}

技術分享圖片

變量t1的值是111,變量t2的值是222

Jmeter Web 性能測試入門 (六):Jmeter 解析 response 並傳遞 value