摘要:關於postman的斷言方法很多,在網上隨便搜尋下,能搜出一大推,什么牛鬼蛇神都有,讓人眼花繚亂。。甚至在應用時出現錯誤。Test斷言都是根據js規則來寫的,對於我這種不懂js語言的來說確實不友好,也幸好常用的斷言方式也不多,就那么幾個。。自己搜集和整理了8種方式......有從Tests右側添加的,也有通過自己編輯添加。。供自己查看__加強記憶。。
一、檢驗請求是否成功。。我的理解是postman是否成功向服務器發送請求。。。
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
}); //可以從Tests右側自接添加使用。"Status code is 200"可以自行編輯,,
查看斷言結果
.................添加一段的響應數據,為了更好的演示。。以轉換為了json格式。。。
{
"code": 200,
"data": {
"category": [
{
"id": "25",
"name": "個護、化妝",
"pid": "0",
"dept": "1",
"sort": "121",
"orders": "90",
"pre_str": "",
"icon": "/upload/goods/201710/3492a8d78082e4cb2d0ec5d5790112db.JPG",
"ad": "",
"left_ad": "",
"is_show": "1",
"is_chicken": "0"
},
{
"id": "26",
"name": "食品、飲料",
"pid": "0",
"dept": "1",
"sort": "119",
"orders": "94",
"pre_str": "",
"icon": "/upload/goods/201710/92f3101fda20550793d7fb8360a9efab.JPG",
"ad": "",
"left_ad": "",
"is_show": "1",
"is_chicken": "0"
},
二、斷言響應數據中Status的狀態碼是不是"200"......
.....在上面的響應中Status變換為了"code"。。所以斷言"code"是否 === 200
tests["//斷言響應中的code是不是 === 200"] = responseCode.code === 200; //經過自己測試等於號用(===)或(==)都是可以的。。
查看斷言結果 。。。
三、斷言響應返回的數據中是否存在某個字段.............
.......//斷言響應數據中是否存在__"個護、化妝" __字段 //該斷言可在Tests右側自行添加
pm.test("//斷言是否存在__"個護、化妝" __字段", function () {
pm.expect(pm.response.text()).to.include("個護、化妝");
});
查看斷言結果。。。
四、轉化為了json格式,,檢驗里面的值是否正確。。
var jsonData = JSON.parse(responseBody); //第一步.......表示先把響應數據轉化為JSON字符串.....其中變量(jsonData)可以自行定義......
需求:我要校驗響應數據中是否有 id == 26。。通過查看上面的代碼,很顯然。有。
pm.test("//斷言data.category[1].id === 26", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.data.category[1].id).to.eql("26");
});
//第二步,,,,在Tests右側添加斷言..要做修改部分___pm.expect(jsonData.data.category[1].id).to.eql("26");__、、其中括號里的_jsonData_是第一步操作中自己定義的變量,我定義的就是(jsonData)>>>___data.category[1].id___如我要查看(序號1)員工的id,就要把總代理data和它的上級領導category也帶進去,並在category后面表明要查找的員工的序號__[1]__。。。如果查看(序號0)員工的id,,,就改為__data.category[0].id__
五、校驗響應時間
。。。。校驗響應時間是不是<=300ms
pm.test("//Response響應時間是否<=300ms", function () {pm.expect(pm.response.responseTime).to.be.below(300);});
查看斷言結果。。>>>>
六、校驗響應數中,返回的數據類型
。。。。我要查看(序號0)員工的name 是不是 string>>>>>就是校驗"個護、華妝"是不是字符串類型
var jsonData = JSON.parse(responseBody); //第一步先轉化為json字符串。。其中變量(jsonData)可以自行定義......
tests["//data.category.name__valuse的值的類型是不是string"] = typeof(jsonData.data.category[0].name) == "string";
。。。。。(jsonData.data.category[0].name)表達式和第四種校驗方式里的一致。。
七、斷言響應數據中是否存在某個元素
。。。。參照上面的響應數據,校驗是否有pid這個元素
tests["//斷言返回的數據中是否存在__pid__這個元素"] = responseBody.has("pid");
八、校驗響應數據中的Status是不是200或301
。。。。。意思就是響應數據code是200或是301。。就表示時響應成功的。。 //該斷言可以在Tests右側添加
pm.test("//響應status code 是200,301就算成功", function () {
pm.expect(pm.response.code).to.be.oneOf([200,301]);
});