新公司要編寫jmeter腳本,Java丟掉N久也不想撿起來的我第一時間尋找其他語言編寫的方法,千辛萬苦找到了jython,還沒開心呢,寫完登錄和退出腳本問題就來了,jython已經停更多年,很多功能和現在並不接軌了,只能扭頭乖乖撿起java。好在jmeter腳本需要的Java包主要只有兩個,一個JSONArray一個JsonObject。為了加深印象順帶撿起丟了許久未更新的blog開始記隨筆了,目標是一周內熟悉語法,能獨立編寫beanshell。
基本獲取jmeter響應參數都可以套用下面的模板
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; //獲取上一個請求的返回值 String json=prev.getResponseDataAsString(); //將返回值轉換為json JSONObject jso = JSON.parseObject(json); //獲取data JSONObject data = jso.getJSONObject("data"); //獲取token //也可以寫作String token = jso.getJSONObject("data").getString("token"); String token = data.getString("token"); log.info("token"); //使用vars.put()方法儲存變量token vars.put("token",token);
在后面的其他接口中如何需要使用變量token,可以使用${token}來獲取變量的值;
變量儲存好后,在需要斷言的接口后面添加BeanShell斷言,使用Failrue來標識斷言失敗,FailureMessage標示斷言失敗的原因,如:
//使用vars.get()方法獲取變量的值 String token= vars.get("token"); if(!message.equals("")) { Failure = true; FailureMessage = "規則解析失敗"; }else{ FailureMessage = "規則解析成功"; }
或者直接在需要斷言的接口中進行斷言操作
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; //獲取上一個請求的返回值 String json=prev.getResponseDataAsString(); //將返回值轉換為json JSONObject jso = JSON.parseObject(json); //獲取data JSONObject data = jso.getJSONObject("data"); //獲取token //也可以寫作String token = jso.getJSONObject("data").getString("token"); String token = data.getString("token"); log.info("token"); if(!message.equals("")) { Failure = true; FailureMessage = "規則解析失敗"; }else{ FailureMessage = "規則解析成功"; }