響應以及斷言
在“發送HTTP請求”一講中,我們講解了APIPOST中響應資料的檢視。
API 請求響應
點選發送按鈕後,如果有資料傳回,則會顯示傳回資料,響應時間,響應碼,Cookie等。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5yYldjZ3UGMhVmY0EmYhJWZyYTZ0cTMxETO0gzMzYmMi9CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
注意:傳回資料預設是 ==美化== 模式,便于檢視 JSON XML 格式。您可以通過切換 ==原生== 或 ==預覽== 模式 檢視其它類型的類型。
傳回Headers
除了檢視結果外,ApiPost也提供了強大的測試校驗功能。在這裡我們也可以使用斷言來進行響應結果的校驗。
響應結果分屏展示
在APIPOST 5.4版本後,支援“響應結果分屏展示”,進而提升工作區的空間。
什麼是斷言?
協作開發,版本更新,伺服器更新,接口傳回有可能因為一些bug,和我們預期結果不一緻。為了便于開發&測試人員能夠更快的發現bug,有利于整個産品品質以及進度的保證。我們推出斷言功能。
如何使用斷言?
- 定義測試用例
- 驗證測試用例
例如接口傳回:
{
"errcode": 0,
"errstr": "success",
"post": [],
"get": [],
"request": [],
"put": "",
"header": {
"Host": "echo.apipost.cn",
"Connection": "keep-alive",
"Content-Length": "0",
"Accept": "application/json, text/javascript, */*; q=0.01",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "zh-CN",
"Content-Type": "application/json",
"Cookie": "PHPSESSID=n3k73k06o6ghnie4e9re4rbf0t",
"Origin": "https://echo.apipost.cn",
"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1"
}
}
定義測試用例:
apt.assert('response.raw.status==200');
apt.assert('response.raw.type=="json"');
apt.assert('response.json.errcode==0');
apt.assert('response.raw.responseTime<100');
apt.assert('response.json.header.Host=="echo.apipost.cn"');
點選發送按鈕後:
綠色表示測試通過,紅色表示測試不通過。
特别注意:==每個測試用例是一行,不能換行。==
例:apt.assert('response.json.header.Host=="echo.apipost.cn"');
1)response.json.header.Host 表示響應json下面的header數組中的Host字段,
2)必須都為1,才會通過。
常見的測試用例可以通過後執行腳本擷取:
更多響應參數變量
response.raw:原始響應資料
調用示例:
response.raw.status //響應狀态碼(200、301、404等)
response.raw.responseTime //響應時間(毫秒)
response.raw.type //響應類型(json等)
response.raw.responseText //響應文本
response.json:json格式的響應資料
調用示例如上面示例:
response.json.data.token //也可以 response.json.data["token"]
response.headers:響應頭
response.headers.server //也可以 response.headers["server"]
response.cookies :響應cookie
response.cookies.PHPSESSION //也可以 response.cookies["PHPSESSION"]
常用斷言表達式
1、檢查response body中是否包含某個string
apt.assert('response.raw.responseText=="test"'); // 檢查響應文本是否等于test字元串
apt.assert('response.raw.responseText.indexOf("test") > -1'); // 檢查響應文本是否含有test字元串
2、檢測傳回JSON中的某個值是否等于預期的值
apt.assert('response.json.hasOwnProperty("errcode")'); // 檢測傳回json對象的是否含有errcode字段
apt.assert('response.json.errcode=="success"'); // 檢測傳回json對象的errcode字段是否等于success字元串
apt.assert('response.json.errcode.indexOf("success") > -1'); // 檢測傳回json對象的errcode字段是否含有success字元串
apt.assert('response.json.errcode!="success"'); // 檢測傳回json對象的errcode字段是否不等于success字元串
apt.assert('response.json.errcode>=1'); // 檢測傳回json對象的errcode字段是否大于1
apt.assert('response.json.errcode==null'); // 檢測傳回json對象的errcode字段是否是null
3、測試response Headers中的某個元素是否存在(如:Content-Type)
apt.assert('response.headers.hasOwnProperty("content-type")');
4、驗證Status code(響應碼)的值是不是等于200
apt.assert('response.raw.status==200');
5、驗證Response time(請求耗時)是否大于某個值
apt.assert('response.raw.responseTime>=100');
6、驗證傳回類型是不是json
apt.assert('response.raw.type=="json"');