作者:季沐測試筆記
原文地址:https://www.cnblogs.com/testero/p/15436864.html
部落格主頁:https://www.cnblogs.com/testero
1 BeanShell 斷言之例項介紹
1.1 假設當前有個判斷該使用者是否為新使用者的介面,返回的資料格式為以下內容:
{
"success": true,
"code": 0,
"msg": "success",
"data": {
"newUser": true,
"invitationCode": null
},
"total": 0
}
-
當使用者為新使用者時,newUser的值為true
-
當使用者已是老使用者時,newUser的值為false
1.2 假設有兩為使用者:15293561001為老使用者,15293561002為新使用者,現需要對改介面返回的資料進行驗證,看是否達到預期效果,在Jmeter斷言中選擇BeanShell 斷言
BeanShell中的指令碼內容的驗證就是根據使用者判斷newUser的值是否正確,這裡會用到BeanShell斷言的一些語法,只需要判斷下後定義下斷言失敗或是成功即可,斷言內容為以下內容
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSON;
prev.setDataEncoding("UTF-8");
String result = prev.getResponseDataAsString();
String result = prev.getResponseDataAsString();
System.out.println("------------------------------------------------------");
JSONObject response = JSON.parseObject(result);
System.out.println("response為"+response);
JSONObject data = (JSONObject) response.get("data");
System.out.println("data為"+data);
System.out.println("mobile為"+"${mobile}");
System.out.println("newUser為"+data.get("newUser"));
if ( "${mobile}" == "15293561001") {
if (data.get("newUser").toString().equals("false")){
Failure = false;
FailureMessage = "斷言成功";
}else {
Failure = true;
FailureMessage = "斷言失敗,newUser為"+data.get("newUser");
}
}else if ("${mobile}" == "15293561002"){
if (data.get("newUser").toString().equals("true")){
Failure = false;
FailureMessage = "斷言成功";
}else {
Failure = true;
FailureMessage = "斷言失敗,newUser為"+data.get("newUser");
}
}
斷言中15293561001判斷的newUser為false,15293561002判斷的newUser為true,該斷言應該完全通過,迴圈請求該介面,察看結果樹
兩條資料都是斷言通過
下面我們將15293561002的newUser斷言處改為false,執行效果如下
可以看到顯示出了之前定義的斷言失敗的資訊和介面返回的該欄位的實際結果。
2 斷言語法介紹
示例:
if (data.get("newUser").toString().equals("true")){
Failure = false;
FailureMessage = "斷言成功";
}else {
Failure = true;
FailureMessage = "斷言失敗,newUser為"+data.get("newUser");
}
以上斷言資訊中Failrue用來標識斷言失敗,Failure = false;時表示斷言成功
FailureMessage標識斷言失敗的原因