BeanShell介紹
BeanShell是一個嵌套在jmeter中的一個免費的、小型的處理器,採用Java編寫的。
BeanShell執行標準的Java語法,並使用常見的腳本編寫便利進行擴展,可支持自定義導出Jar1包引用等。
使用前的背景
接口間的關聯參數數據需要傳遞參數值。故可通過Beanshell PostProcessor來處理。
下面我們一起來學習如何使用Beanshell PostProcessor獲取接口返回的值。
BeanShell PostProcessor的使用
案例:一個登錄接口響應數據中的token值,在後續的接口(比如:創建用戶)中需要用到。
- 使用jmeter複製登錄後的響應數據:
{
"status":200,
"message":"",
"username":"xiaoming",
"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InhpYW9oZWkiLCJpZCI6NjU3OCwiaWF0IjoxNTg3ODkxNTI4LCJleHAiOjE2NzQyOTE1Mjh9.ICi1Rb9X_2s8GGRsAXmVePJ6byjGEKHB_q3qgN35qtg"
}
-
這裏是通過org.json解析的。所以需要下載org.json的jar包。【需自行下載】
-
jmeter測試計劃中導入下載到的jar包
-
在登錄請求後,添加後置處理器 -> BeanShell PostProcessor。
-
在Beanshell PostProcessor中的Script中輸入以下代碼
//先引入Jar包
import org.json.*;
//獲取請求返回值。賦予字符串String 變量
String response = prev.getResponseDataAsString();
//將string的值轉換成成 Jsonobject 對象
JSONObject data_obj= new JSONObject(response);
//獲取Json中 token的值
String token= data_obj.get("token").toString();
//將獲取到的token值賦予變量
vars.put("token",token);
//打印token的值
log.info("====token====="+token);
打印的日誌在控制檯中顯示
6. 後續的接口調用(${變量名稱})將token對應的值加進去
總結
這個只是簡單的Beanshell 提取json數據。後續有需要,會更新複雜json的解析知識。
Jar包是開發者寫好的工具類通過Java或開發工具(eclipse、idea等)打包而成,供其它人進行調用。 ↩︎