測試公開課資料系列02--Postman之chai.js斷言應用
前言
如果要挖井,就要挖到水出為止。
明晚公開課給大家講講如何用chai.js斷言,有用過postman只會右側點來自動生成斷言程式碼,或在公司應用postman的朋友們都來聽聽。
一、chai.js斷言介紹
是一套TDD(測試驅動開發)/BDD(行為驅動開發)的斷言庫
包含有3個斷言庫支援BDD風格的expect/should和TDD風格的assert
可以高效的和任何js測試框架搭配使用(支援在postman中應用)
二、postman設定斷言的流程
在tests頁籤擷取要對比的實際響應資訊(響應頭、響應正文、響應狀態碼等)
利用斷言語句 tests[] 或 chai.js 形式把實際響應資訊與期望結果對比
執行請求進行結果檢視
三、擷取實際響應資訊的新老版本程式碼對比
擷取名稱 老版本 新版本
響應狀態碼 responseCode.code pm.response.code
響應狀態資訊 responseCode.name pm.response.status
響應頭 postman.getResponseHeader('Content-Type') pm.response.headers
響應正文 responseBody pm.response.text()
json格式響應正文 JSON.parse(responseBody) pm.response.json()
四、tests斷言基本語法
tests["case01 驗證是否為true"] = true; //false
tests["case02 驗證是否1+1=2"] = 1+1 === 2; //判斷是否相等
tests["case03 驗證是否包含123"] = "1234567hello".has("123"); //判斷是否包含
tests["case04 驗證是否3>5"] = 3 > 5 ; //判斷是否相等
tests["case05 與運算"] = 3 > 2 && 3>1 ; //與運算
tests["case06 或運算"] = 3 > 2 || 3>5 ; //或運算
tests["case07 非運算"] = !(3 > 2); //非運算
五、chai.js斷言語法
5.1 pm.expect()
pm.test("測試用例標題", function () {
pm.expect(true).to.be.true; //chai.js斷言編寫處
});
pm.expect(2<5 && 3<6).to.be.true; //判斷是否為true
pm.expect('everything').to.be.ok; //判斷是否為真值 非空、非0 即為真
pm.expect('hello').to.equal('hello'); //判斷是否相等
pm.expect({ foo: 'bar' }).to.eql({ foo: 'bar' }); //判斷是否深度相等
pm.expect('foobar').to.have.string('bar'); //判斷是否包含字串
pm.expect('foobar').to.match(/^foo/); //判斷是否包含,支援正規表示式
......
5.2 pm.response
pm.test("Status code is 200", function () {
pm.response.to.have.status(200); //判斷響應狀態碼是否是200
});
pm.test("Content-Type is present", function () {
pm.response.to.have.header("Content-Type"); //判斷響應頭部資訊是否包含Content-Type欄位
});
5.3 tv4(Tiny Validator for JSON data)
postman使用tv4和chai.js斷言庫可以進行json schema(結構)的斷言
var schema ={
"type":"object", //表示當前節點的型別,最外層type代表json的最外層是什麼樣的型別
"properties":{ //代表當前節點的子節點資訊。如 access_token 和 expires_in
"access_token":{
"type":"string"
},
"expires_in":{
"type": "integer"
}
},
"required": [ //一個陣列型別,代表當前節點下必需的節點key
"access_token",
"expires_in"
]
}
pm.test('Json Schema is valid', function() {
var jsonData = pm.response.json();
pm.expect(tv4.validate(jsonData, schema)).to.be.true;
});
六、總結及反思
實際工作中,斷言庫功能強大好用即可
json schema可以好好研究利用在介面測試過程中
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69940641/viewspace-2935611/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 測試公開課資料系列01--Fiddler之AutoResponse線上除錯利器除錯
- 大資料技術與應用課堂測試-資料清洗同步大資料
- 測試平臺系列(70) 豐富斷言型別型別
- 軟體測試之資料庫測試技術系列七資料庫
- 軟體測試之資料庫系列五資料庫
- 軟體測試之資料庫系列四資料庫
- 軟體測試之資料庫系列三資料庫
- 軟體測試之資料庫系列二資料庫
- 軟體測試之資料庫系列一資料庫
- 軟體測試之資料庫系列六資料庫
- .net持續整合測試篇之Nunit that斷言
- 葡萄城公開課—活字格Web應用生成平臺基礎分享系列Web
- 大資料測試技術——課堂測試大資料
- .net持續整合測試篇之Nunit常見斷言
- 《資料分析與資料探勘》--天津大學公開課
- 大資料公開課系列課程第二季-趙強老師-專題視訊課程大資料
- 阿里雲 EventBridge 系列公開課來襲阿里
- 功能測試之存量資料新與增資料測試
- junit 測試中各種斷言用法
- [譯]重新思考單元測試斷言
- 介面測試--apipost介面斷言詳解API
- 介面測試--自定義斷言設定
- 使用dbunit測試spring + mybatis的資料庫應用SpringMyBatis資料庫
- 介面測試框架實戰(三)| JSON 請求與響應斷言框架JSON
- 「阿里雲 RocketMQ 系列公開課」重磅來襲!阿里MQ
- 大資料測試之ETL大資料
- jmeter學習指南之響應斷言和beanshell斷言JMeterBean
- 十二、Jmeter 斷言-響應斷言、Json 斷言和 Beanshell 斷言JMeterJSONBean
- 博睿學院 | 本週四,博睿學院資料整合系列公開課正式開講
- 以資料思維和技能提升資料應用測試實踐
- 【優才系列公開課】第四十五講:SQLite輕量級資料庫SQLite資料庫
- TRIZ與創新思維實戰應用—2022公開課
- 自動化測試中如何判斷測試是否透過?詳解 Pytest 測試框架的斷言用法框架
- 搞定Go單元測試(三)—— 斷言(testify)Go
- 如何設定自動化測試斷言?
- web應用安全測試之業務漏洞Web
- 2020年11月4號公開課-效能測試基礎理論
- 測試資料之自動生成