十二、Jmeter 斷言-響應斷言、Json 斷言和 Beanshell 斷言
所謂斷言,就是檢查介面的返回是否符合預期。
自動化測試指令碼,如果斷言做的不好,就好比測試用例不寫預期結果,因此我認為斷言是最重要一部分。
關於如何做好斷言,我覺得要做到:要斷言的內容一定是唯一的,每個介面都要做斷言。
舉例
用例:新增一條資料,然後去列表檢視新增是否成功。新增資料,如果成功返回資料id,如下:
{
"id": "63c81f8c-ba80-4504-ac1d-66f3774307b2",
"msg":"ok",
"code":0
}
列表資料返回如下:
無資料
{
"data": []
}
有資料
{
"data": [
{
"id": "63c81f8c-ba80-4504-ac1d-66f3774307b2",
"name": "zhangsan"
}
]
}
如何要斷言列表中存在我新增的資料?錯誤斷言:斷言data,不管是否存在我們要的資料,返回內容都包含data正確斷言:從新增介面提取返回的ID,然後斷言ID出現在列表中注意:如果id是自增形式的,建議使用json斷言,在這裡json斷言是首選
實現斷言的三種方式
我們首先要把新增介面的id提取出來,用到json提取器,具體配置見下圖
JSON斷言
json斷言配置如下,取出列表所有資料的id看是否存在新增返回的id
關於json斷言配置解釋,在前面文章已經有介紹。
響應斷言
通過響應斷言進行斷言預期,只需要判斷列表資料中出現id,配置如下
關於響應斷言配置解釋,在前面文章已經有介紹。
Beanshell斷言
Beanshell斷言在實際運用的比較少,除非是結果需要經過處理後進行斷言才用得到,本文為了舉例,用Beanshell斷言實現我們的目的,配置如下
附上指令碼原始碼
import org.json.*;
//獲取上一個請求的返回值
String response = prev.getResponseDataAsString();
//將返回值轉換為json
JSONObject responseJson = new JSONObject(response);
//從json提取data陣列
JSONArray dataList = responseJson.getJSONArray("data");
//遍歷所有列表,判斷是否存在id
for(i==0;i<dataList.length;i++){
JSONObject item = dataList[i];
if(item.get("id")==${id}){
Failure = false;
FailureMessage = "存在新增的id";
break;
}
else{
Failure = true;
FailureMessage = "不存在新增的id";
}
}
補充
假如我們執行刪除資料後,我們需要斷言不存在於列表
響應斷言取反
json斷言取反
Beanshell斷言讀者自己想想如何處理吧!
相關文章
- jmeter學習指南之響應斷言和beanshell斷言JMeterBean
- Jmeter之BeanShell 斷言JMeterBean
- JMeter—斷言(十一)JMeter
- jmeter新增斷言JMeter
- 『動善時』JMeter基礎 — 31、JMeter中BeanShell斷言詳解JMeterBean
- 『動善時』JMeter基礎 — 29、JMeter響應斷言詳解JMeter
- 肯定賦值斷言與非空斷言賦值
- 斷言操作
- 『動善時』JMeter基礎 — 30、JMeter中JSON斷言詳解JMeterJSON
- 【Node斷言assert】
- Nodejs 斷言 assertNodeJS
- 型別斷言型別
- unittest斷言-assertIn
- Jmeter(二十二) - 從入門到精通 - JMeter斷言 - 下篇(詳解教程)JMeter
- 介面測試框架實戰(三)| JSON 請求與響應斷言框架JSON
- SpringBoot(20)---斷言(Assert)Spring Boot
- 斷言(ASSERT)的用法
- TypeScript 型別斷言TypeScript型別
- postman(三):新增斷言Postman
- GO型別斷言Go型別
- 淺析Java斷言Java
- python斷言方法assertPython
- 優雅且語義化的斷言之—將模型屬性斷言變為模型方法斷言模型
- 零寬斷言初試
- Locust 斷言的實現?
- apipost如何設定斷言API
- 在 Python 中使用斷言Python
- Java中的斷言assertJava
- postmen新增常用斷言解析
- 《組合語言》第十二章 內中斷組合語言
- playwright的一些斷言
- 組合語言---判斷字元組合語言字元
- 【pytest系列】- assert斷言的使用
- Pytest的斷言方式及應用場景
- C語言判斷素數,判斷質素演算法C語言演算法
- Nodejs教程11:assert(斷言)模組NodeJS
- 正則匹配之零寬斷言
- 用於gotesting的Golang斷言庫Golang