postman斷言


一、斷言

在 postman 中我們是在Tests標簽中編寫斷言,同時右側封裝了常用的斷言,當然 Tests 除了可以作為斷言,還可以當做后置處理器來編寫一些后置處理代碼,經常應用於:

【1】獲取當前接口的響應,傳遞給下一個接口
【2】控制多個接口間的執行順序。

 

二、常見斷言方法

1、狀態碼斷言

   1)判斷接口響應的狀態碼:Status code: code is 200

pm.test("Status code is 200", function () {//Status code is 200是斷言名稱,可以自行修改
 pm.response.to.have.status(200); //這里填寫的200是預期結果,實際結果是請求返回結果
});

   2)判斷接口響應碼是否與預期集合中的某個值一致

pm.test("Successful POST request", function () { pm.expect(pm.response.code).to.be.oneOf([201,202]); //檢查響應碼是否為201或者202 });

   3)判斷狀態碼名稱(也就是狀態碼后面的描述)是否包含某個字符串:Status code:code name has string

pm.test("Status code name has string", function () { pm.response.to.have.status("OK"); //斷言響應狀態消息包含OK
});

2、響應內容斷言

1)斷言響應體中包含XXX字符串:Response body:Contains string
pm.test("Body matches string", function () { pm.expect(pm.response.text()).to.include("string_you_want_to_search");//pm.response.text()獲取響應文本中包含string
});
2)響應結果如果是json,斷言響應體(json)中某個鍵名對應的值:Response body : JSON value check
pm.test("Your test name", function () { var jsonData = pm.response.json();//獲取響應體,以json顯示,賦值給jsonData .注意:該響應體必須返會是的json,否則會報錯
 pm.expect(jsonData.value).to.eql(100);//獲取jsonData中鍵名為value的值,然后和100進行比較
});
3)斷言響應體等於XXX字符串:Response body : is equal to a string
pm.test("Body is correct", function () { pm.response.to.have.body("response_body_string");//獲取響應體等於response_body_string
});

3、響應頭斷言

1)斷言響應頭包含:Response headers:Content-Type header check
pm.test("Content-Type is present", function () { pm.response.to.have.header("Content-Type");//斷言響應頭存在"Content-Type"
});

4、響應速度斷言

 1)判斷實際響應時間是否與低於預期時間:Response time is less than 200ms

pm.test("Response time is less than 200ms", function () { pm.expect(pm.response.responseTime).to.be.below(200); });
 
        

實例

針對上面的返回結果,我們設置斷言如下

注意:postman獲取斷言時,任何響應都必須轉為JsonData 對象。例如我們想獲取如下響應信息中鍵值為 name 的值:

{
  "reponse": {
    "person": {
      "name": "hai",
      "age": 18
    }
  }
}

此時我們應該:

//第一步將響應轉為 jsonData 對象 jsonData = pm.response.json(); //第二步通過 . 獲取到我們想要的 age 的值 var age = jsonData.reponse.person.age;


除了單個接口斷言外,postman還集合斷言和模塊斷言,風別通過點擊集合或者模塊,然后點擊Edit,進入Test標簽進行斷言即可,如下圖

三、常用斷言對應的腳本

1.清除一個環境變量

   postman.clearEnvironmentVariable("variable_key");

2.斷言響應數據中是否存在某個元素

  tests["//斷言返回的數據中是否存在__pid__這個元素"] = responseBody.has("pid");

3.斷言response等於預期內容

   tests["Body is correct"] = responseBody === "response_body_string";

4.斷言json解析后的key的值等於預期內容

   tests["Args key contains argument passed as url parameter"] = 'test' in responseJSON.args

5.檢查response的header信息是否有被測字段

   tests["Content-Type is present"] = postman.getResponseHeader("Content-Type");

6.校驗響應數據中,返回的數據類型

   var jsonData = JSON.parse(responseBody);//第一步先轉化為json字符串。其中變量(jsonData)可以自行定義......
   tests["//data.category.name__valuse的值的類型是不是string"] = typeof(jsonData.data.category[0].name) == "string";

7.響應時間判斷

   tests["Response time is less than 200ms"] = responseTime < 200;

8.設置環境變量

   postman.setEnvironmentVariable("variable_key", "variable_value");

9.斷言狀態碼

   tests["Status code is 200"] = responseCode.code != 400;

10.檢查響應碼name

   tests["Status code name has string"] = responseCode.name.has("Created");

11.斷言成功的post請求返回碼

   tests["Successful POST request"] = responseCode.code === 201 || responseCode.code === 202;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM