1. BeanShell PreProcessor 前置處理器特有函式:(在發送請求之前運行)
①. 獲取本次請求的入參body中的內容
導包 import org.apache.jmeter.config.Arguments; //jmeter4.0及以上自帶,需導包一次
Arguments argss = sampler.getArguments();
String argss_str = argss.getArgument(0).getValue();
②. 獲取本次請求的api路徑
String path = sampler.getPath();
2. BeanShell PostProcessor 后置處理器特有函式:(在回傳回應之后運行)
①. 獲取本次請求的回應內容
String response = prev.getResponseDataAsString();
3. json字串型別轉為json物件型別
①. 阿里的 fastjson-1.2.70 jar包
導包 import com.alibaba.fastjson.*; //下載 fastjson-1.2.70 jar包,放到lib目錄后重啟jmeter可用
JSONObject JsonObj= JSON.parseObject(JsonStr)
②. org.json_1.0.0.v 版本jar包
導包 import org.json.*;
JSONObject JsonObj= new JSONObject(JsonStr)
4. 獲取json物件中的物件,陣列,欄位
eg: JsonObj:{
keyinfo:{
"documentno": "PYJK20200106123456789"
},
dealinfo:[{
"businesscode": "N99"
},
{
"businesscode": "N98"
}]
}
以阿里巴巴包為例
JSONObject keyinfo = JsonObj.getJSONObject("keyinfo"); //獲取json物件中的物件
String documentno = JsonObj.getJSONObject("keyinfo").getString("documentno"); //獲取json物件中的欄位值
JSONArray dealinfo = JsonObj.getJSONArray("dealinfo"); //獲取json物件中的陣列
JSONObject keyinfo = JsonObj.getJSONArray("dealinfo").getJSONObject(0); //獲取json陣列中的物件,索引表示第幾個物件
String businesscode = JsonObj.getJSONArray("dealinfo").getJSONObject(0).getString("businesscode"); //獲取陣列中物件的欄位值
5. 設定變數,只能是字串型別的值(變數存盤在jmeter記憶體中)
①. 設定區域變數(作用于單個執行緒組)
vars.put("a", "123"); //設定變數a 為123
vars.put("documentno", documentno); //將變數documentno 設定為區域變數
vars.put("keyinfo", keyinfo.toString()); //將物件keyinfo轉為字串設定為區域變數
②獲取區域變數 (在同一個執行緒組中可獲取到)
String a = vars.get("a"); //a="123"
String documentno = vars.get("documentno"); //documentno="PYJK20200106123456789"
JSONObject keyinfo = JSON.parseObject(vars.get("keyinfo")); //將獲取的keyinfo字串轉為物件
③. 設定全域變數(作用于測驗計劃下的所有執行緒組)
props.put(); //用法與區域變數函式vars.put() 一致
③. 獲取全域變數(測驗計劃下的所有執行緒組均可獲取到)
String a = props.get("a"); //用法與區域變數函式vars.get() 一致
6. 組建變數大物件VO
①. 新建物件
JSONObject keyinfo = new JSONObject();
②. 向物件中增加key-value
keyinfo.put("documentno", "PYJK20200106123456789");
③. 新建陣列
JSONArray dealinfo = new JSONArray();
④. 向陣列中增加物件,欄位 ( 有先后順序,索引 0,1,2。。)
dealinfo.add(dealinfo);
dealinfo.add(dealinfo);
dealinfo.add("aa"); //增加欄位
⑤. 向物件中增加物件,陣列
JSONObject VO = new JSONObject();
VO.put("keyinfo", keyinfo);
VO.put("dealinfo", dealinfo);
7. 以ASSIC碼排序的JSONObject(),向JSONObject()物件中put的key-value,自動以ASSIC碼排序,不以代碼先后順序排序。若想以固定順序排列,可在新建物件時,使用new JSONObject(new LinkedHashMap()),具體原因這里不做闡述,如有想了解的朋友可以搜索map和LinkedHashMap之間的區別。
8. 比較兩個物件是否相等
以阿里巴巴jar包為例
import com.alibaba.fastjson.*;
public isObjValEqual(a_obj, b_obj){
Object a_key = a_obj.keySet(); //獲取a物件中的所有鍵key,組成陣列集合
Object b_key = b_obj.keySet(); //獲取b物件中的所有鍵key,組成陣列集合
Object key_list = maxArray(a_key, b_key); //獲取長度大的陣列集合
for(Object key : key_list){ //遍歷每一個鍵key
String a_value = a_obj.get(key); //獲取key對應的值
String b_value = b_obj.get(key);
if(!a_value.equals(b_value)){
log.info("兩個物件中的"+key+"對應的值不一致");
return false;
}
}
return true;
}
9. hash256,md5演算法函式
導包 import org.apache.commons.codec.digest.DigestUtils; //下載org.apache.commons.codec_1.3.0.v 版本包
String md5 = DigestUtils.md5Hex(str).toLowerCase(); //Upper大寫,Lower小寫
String hash256= DigestUtils.sha256Hex(str).toLowerCase();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/245353.html
標籤:軟件測試
