jmeter中beanshell腳本的使用


周末學習了一下beanshell腳本的使用,下面用一個例子演示下

首先一個請求A的響應內容如下

{
    "status": "ok",
"msg": "ok",
    "data": {
        "records": [{
            "id": 223,
            "contractClassify": null,
            "contractClassifyId": 874,
"contractTypeId": 2,
            "formId": "135",
            }, 
            {
            "id": 229,
            "contractClassify": null,
            "contractClassifyId": 874,
"contractTypeId": 1,
            "formId": "137",
            ],
            
        "total": 13,
        "size": 10,
        "current": 1,
    },
}

在進行處理前,先把一個jar包放進jmeter安裝目錄下的lib目錄下 json-20180130.jar

在請求A下新增一個BeanShell后置處理器,然后可以在里邊編寫腳本來處理數據

1、首先先把返回內容轉為一個json對象

  • 使用 prev.getResponseDataAsString()獲取上個請求的返回數據(字符串格式);
  • 利用 JSONObject 將返回數據構造成一個 JSONObject對象,並將其賦給 responseData;
  • 使用log.info()打印一下結果,注意在使用log.info()時需要使用toString()將json對象轉為字符串才能正常打印
import org.json.*;

String responseData = prev.getResponseDataAsString(); //獲取請求的返回結果

JSONObject response = new JSONObject(responseData);  //把返回值構造為json對象

log.info("response="+response.toString());  // 打印一下結果

 2、獲取返回數據中的 "data"

  • 使用 xx.get(key) 獲取某個字段的內容
data = response.get("data"); //獲取返回數據中的data
log.info("data="+data.toString());

3、獲取 "data"下的"total"

  • 如果json對象下嵌套了json對象,可以繼續使用 .get(key) 來獲取嵌套字段的內容
total = response.get("data").get("total"); //獲取返回數據中data下的total
log.info("total="+total.toString());

 

 4、獲取 "data"下"records"的內容

  • 由於records的內容是個數組,所以要使用 getJSONArray() 來獲取它的數據
records = response.get("data").getJSONArray("records");  //使用getJSONArray提取records數組
log.info("records="+records);

5、獲取record數組的長度

int len = records.length();  // 獲取數組的長度
String strlen = Integer.toString(len); //轉為字符串
log.info("len="+strlen); // 打印結果,其實直接打印len也行

 6、設置一個新變量,給后面請求使用

vars.put("temp", String.valueOf(total)); // 創建一個變量temp,並把total的值轉成字符串賦給它(必須轉成字符串再賦給temp,不然會報錯,也可以使用total.toString()轉換)

再新建一個請求B,然后在請求B下添加一個BeanShell后置處理器,如下

這個BeanShell腳本如下

String temp1 = vars.get("temp");
log.info("temp1="+temp1)

執行結果如下

可以看到變量temp在下一個請求中引用成功,並且在后續的beanshell腳本中也能通過 vars.get(String key)獲取(注意變量名加引號)

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM