『政善治』Postman — 10.Postman斷言(一)

我們檢驗一個測試用例是否通過,一般會將我們心理預期的結果與實際結果進行比對,如果結果一致則證明測試通過,如果結果不一致,則證明測試不通過,這即是我們經常所說的斷言。

1、Tests的介紹

Postman中的斷言是使用請求后腳本Tests,是對狀態(tài)碼、響應頭、響應正文等信息進行斷言操作。

在Postman中封裝了我們常見的斷言代碼片段,當然Tests除了可以作為斷言,還可以當做后置處理器。

經常應用于:

  1. 斷言。
  2. 獲取當前接口的響應數據,傳遞給下一個接口。

提示:在一個請求或者一個集合都可以定義Tests,在集合中定義Tests,表示集合中的每一個請求響應后,都需要執(zhí)行Tests中的斷言腳本。

點擊請求中的Tests標簽項,如下圖:

我們可以在上圖看到,在Tests標簽頁的右側邊欄中,Postman為我們提供了一些常用的代碼模版。

提示我們:

Test scripts are written in JavaScript, and are run after the response is received.
測試腳本用JavaScript編寫,并在收到響應后運行。

Learn more about tests scripts
點擊這里,可以學習更多關于測試腳本的資料。

這里學習關于Tests的更多用法:
https://go.pstmn.io/docs-test-scripts

總結:

(1)Postman測試沙箱的執(zhí)行順序:

  1. 在發(fā)送Request之前,執(zhí)行Pre-request Script中的js腳本,可定制化Request(準備數據)。
  2. 收到Response之后,執(zhí)行Tests中的腳本,處理返回的數據(斷言或者處理數據)。

整個流大概是這樣的:


(2)Postman中Tests的作用:

  1. 做斷言:可以斷言狀態(tài)碼或者斷言返回數據中的字段。
  2. 取返回值:做流程接口的時候,向下傳遞返回數據。

2、常用SNIPPETS(片段)說明

(1)常用變量相關

  • Get an environment variable:獲取一個環(huán)境變量。
  • Get a gloval variable:獲取一個全局變量。
  • Get a variable:獲取一個變量(本地)。
  • Set an environment variable:設置一個環(huán)境變量。
  • Set a global variable:設置一個全局變量。
  • Clear an environment variable:清空一個環(huán)境變量。
  • Clear a global variable:清空一個全局變量 。

使用:

  • 獲取變量:如果在下一個請求中用到上一個請求的返回值,可以使用“設置一個環(huán)境變量”,將請求的返回值設置為環(huán)境變量,在下一個請求中,使用“獲取一個環(huán)境變量”取到該值。
  • 清空變量:這里的清空等于刪除變量,一個參數使用完成后,需要刪除,或者清空值都可以使用該方法。

(同前一篇Pre-request Script的使用方式一樣)

(2)狀態(tài)碼相關

  • Status code: Code is 200:判斷狀態(tài)碼是否正確;默認判斷狀態(tài)是否為 200, 可修改。

    pm.test("Status code is 200", function () {
        pm.response.to.have.status(200);
    });
    
  • Status code:Successful POST request
    判斷狀態(tài)碼是否為預期結果之一;比如默認斷言狀態(tài)碼是否是 201, 202 中的一個。

    pm.test("Successful POST request", function () {
        pm.expect(pm.response.code).to.be.oneOf([201, 202]);
    });
    
  • Status code:Code name has string
    判斷狀態(tài)碼描述是否包含字符串,比如是否包含 Created。

    pm.test("Status code name has string", function () {
        pm.response.to.have.status("Created");
    });
    

(3)響應結果斷言:

  • Response body: Contains string

    響應結果是否包含字符串;

    注意:這只能檢查Response body中raw格式展示的返回數據,如果raw格式展示的返回數據中,有中文數據未解碼,也只能匹配未解碼形式的內容,且匹配包含不唯一(工作中很少見,一般接口返回數據中不會設計重復字段)。

    pm.test("Body matches string", function () {
        // 比如raw中的數據,“學院”沒有進行Unicode解碼,就只能如下方式進行比對。
        pm.expect(pm.response.text()).to.include("例如:\u5b66\u9662");
    });
    
  • Response body: JSON value check

    響應結果如果是 JSON格式的數據,檢查具體的 JSON字段的值;

    實際工作中基本就用這個方式。(下面有練習好好看看)

    pm.test("Your test name", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.value).to.eql(100);
    });
    
  • Response body: Is equal to a string

    響應結果與字符串是否全部匹配預期的字符串;

    就是在把Response body的數據用raw格式展示,然后全部復制到下面位置。

    pm.test("Body is correct", function () {
        pm.response.to.have.body("raw格式展示的返回數據,全部復制到這里");
    });
    
  • Response body: Convert XML body to a JSON Object
    將 XML 轉換成 JSON;

    var jsonObject = xml2Json(responseBody);
    

等等還有很多,用的時候我們可以查看相關文檔。

(4)Header :

Response headers:Content-Type header check
響應頭部中是否包含字段,代碼片段如下:

pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type(這里填寫請求頭屬性)");
});

(5)響應速度:

Response time is less than 200ms
響應時間是否少于多少 ms。

pm.test("Response time is less than 200ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(200);
});
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容