天天看點

5年程式員問我:什麼是斷言?

響應以及斷言

在“發送HTTP請求”一講中,我們講解了APIPOST中響應資料的檢視。

API 請求響應

點選發送按鈕後,如果有資料傳回,則會顯示傳回資料,響應時間,響應碼,Cookie等。

5年程式員問我:什麼是斷言?

注意:傳回資料預設是 ==美化== 模式,便于檢視 JSON XML 格式。您可以通過切換 ==原生== 或 ==預覽== 模式 檢視其它類型的類型。

傳回Headers

5年程式員問我:什麼是斷言?

除了檢視結果外,ApiPost也提供了強大的測試校驗功能。在這裡我們也可以使用斷言來進行響應結果的校驗。

響應結果分屏展示

在APIPOST 5.4版本後,支援“響應結果分屏展示”,進而提升工作區的空間。

5年程式員問我:什麼是斷言?
5年程式員問我:什麼是斷言?

什麼是斷言?

協作開發,版本更新,伺服器更新,接口傳回有可能因為一些bug,和我們預期結果不一緻。為了便于開發&測試人員能夠更快的發現bug,有利于整個産品品質以及進度的保證。我們推出斷言功能。

如何使用斷言?

  1. 定義測試用例
  2. 驗證測試用例

例如接口傳回:

{
    "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"');
           

點選發送按鈕後:

5年程式員問我:什麼是斷言?

綠色表示測試通過,紅色表示測試不通過。

特别注意:==每個測試用例是一行,不能換行。==

例:apt.assert('response.json.header.Host=="echo.apipost.cn"');

1)response.json.header.Host 表示響應json下面的header數組中的Host字段,

2)必須都為1,才會通過。

常見的測試用例可以通過後執行腳本擷取:

5年程式員問我:什麼是斷言?

更多響應參數變量

response.raw:原始響應資料

調用示例:

response.raw.status //響應狀态碼(200、301、404等)
response.raw.responseTime //響應時間(毫秒)
response.raw.type //響應類型(json等)
response.raw.responseText //響應文本           

response.json:json格式的響應資料

5年程式員問我:什麼是斷言?

調用示例如上面示例:

response.json.data.token //也可以 response.json.data["token"]
           

response.headers:響應頭

5年程式員問我:什麼是斷言?
response.headers.server //也可以 response.headers["server"]
           

response.cookies :響應cookie

5年程式員問我:什麼是斷言?
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"');
           

繼續閱讀