用戶可以在jmeter- “beanShell斷言”中自定義斷言。自由靈活的用腳本實現自己的斷言
beanShell斷言接口介紹
在beanShell中直接可以調用的變量,無需加前綴。
1.log 打印日志 log.info(“在控制台打印日志”);
2.SampleResult 獲取SampleResult對象,可以通過這個對象獲取想要的信息
3.Response 獲取Response對象,可以通過這個對象獲取對應的信息
4.Failure 查看接口調用是否成功,如果返回false是成功的,true是失敗的
5.FailureMessage 失敗信息,沒有設置的時候失敗信息是空的。可以set這個信息
6.ResponseData 獲取 response body,類型是byte[]
7.ResponseCode 返回接口code,成功是200
8.ResponseMessage 獲取msg,成功是OK
9.ResponseHeaders 獲取接口服務端返回的頭部信息
10.RequestHeaders 獲取客戶端請求的頭部信息
11.SampleLabel 獲取接口請求的名稱
12.SamplerData 獲取請求的url和body
13.ctx 代表上下文信息,可以直接使用
14.vars 可以直接調用,將獲取的數據變成jmeter變量(put),也可以獲取用戶自定義的變量(get)
eg:
1.在http sample下添加一個beanShell斷言
2.編寫script
import org.apache.jmeter.assertions;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.assertions.AssertionResult;
import org.json.*;
String response_data = prev.getResponseDataAsString();//獲取接口返回的response數據
JSONObject data_obj = new JSONObject(response_data);//轉換成json
//判斷code是否等於0 如果等於0 再取里面的字段
String code = data_obj.get(“code”);
if(code.equals(“0”))
{
String user_name = data_obj.get(“data”).get(“user”).get(“userName”).toString();
//這里的my_name 是用戶自定義的變量或者之前的接口返回獲取的
if(user_name.equals(${my_name})){
Failure = false; //設置成false 表示接口跑成功,在結果樹中sample是綠色的
//做后續動作
…….
}
else{
//做其他動作
}
}
else
{
Failure = true;//直接判斷失敗,表示接口跑失敗,在結果樹中sample是紅色的
prev.setStopThread(true);//如果斷言失敗,后面的接口不需要再跑,直接暫停
}