濟(jì)南做網(wǎng)站xywlcn/百度用戶服務(wù)中心官網(wǎng)
各位小伙伴大家好, 今天為大家?guī)韕ostman實(shí)戰(zhàn)接口測(cè)試詳細(xì)教程
一、通過接口文檔集合抓包分析接口
通過fiddler抓包獲取到注冊(cè)接口URL地址及相關(guān)參數(shù)數(shù)據(jù),并通過接口文檔分析接口參數(shù)內(nèi)容及參數(shù)說明, 如有必要的依賴條件必須進(jìn)行梳理, 如token等
Fiddler抓包注冊(cè)接口請(qǐng)求與響應(yīng):
接口文檔關(guān)于注冊(cè)接口的描述與參數(shù)說明:
?
二、通過postman發(fā)起請(qǐng)求并獲取響應(yīng)結(jié)果
通過第一步獲取到的相關(guān)數(shù)據(jù),按照請(qǐng)求的溝通, 分別填寫對(duì)應(yīng)的請(qǐng)求行,請(qǐng)求頭,請(qǐng)求體相關(guān)數(shù)據(jù), 發(fā)起請(qǐng)求
注意: 通過接口文檔與抓包, 我們觀察到接口的請(qǐng)求參數(shù)傳參方式 Content-Type: application/x-www-form-url-encoded, 因此我們?cè)谶x擇數(shù)據(jù)時(shí),必須在Body中選擇該類型進(jìn)行參數(shù)傳遞。
Content-Type: 傳參方式類型
1.form-data: 接口類型為文件上傳類型時(shí), 可以選擇Body中的 form-data, 此時(shí)請(qǐng)求頭中Content-Type: multipart/form-data
2.x-www-form-url-encoded: post請(qǐng)求默認(rèn)傳參方式, 傳輸數(shù)據(jù)類型為 key1=value&key2=value…, 此時(shí)請(qǐng)求頭中Content-Type: application/x-www-form-url-encoded
3.text/json格式數(shù)據(jù)傳參: 選擇Body中的Raw, 再選擇json/text即可
Json格式必須以: {key: value, key:value…}格式進(jìn)行傳參
4.get請(qǐng)求參數(shù)寫在URL的?之后, postman中也可以通過Params模塊進(jìn)行傳參
?三、設(shè)置環(huán)境變量引用
postman中環(huán)境變量: Environments --> 設(shè)置新的環(huán)境 --> 添加項(xiàng)目的基礎(chǔ)接口URL地址
環(huán)境變量的引用方式: ?{{變量名}}
在請(qǐng)求中通過{{host}}引用環(huán)境變量中的數(shù)據(jù)即可
?
也可以通過Tests模塊, 使用Javascript腳本進(jìn)行環(huán)境變量的設(shè)置與獲取。
四、postman中的Tests模塊:
?1、獲取響應(yīng)數(shù)據(jù)
?通過Javascript腳本獲取響應(yīng)文本數(shù)據(jù),并在conlose控制臺(tái)進(jìn)行輸出
//獲取postman響應(yīng)文本數(shù)據(jù)varresp = pm.response.text();//控制臺(tái)輸出 獲取到的響應(yīng)數(shù)據(jù)console.log(resp);// 從響應(yīng)數(shù)據(jù)中提取需要的key的值var userid = resp.json().userid;// 通過代碼添加到環(huán)境變量中 key: id, value: useridpm.environment.set("id",userid);// 從環(huán)境變量中獲取指定key的值Var id = pm.environment.get("id");
2 斷言
方式1: Status code: Code is 200//斷言HTTP協(xié)議響應(yīng)狀態(tài)碼為: 200pm.test("斷言HTTP協(xié)議響應(yīng)狀態(tài)碼為200", function () {pm.response.to.have.status(200);});方式2: Response body: Contains String//斷言響應(yīng)文本中包含預(yù)期的字符串?dāng)?shù)據(jù)pm.test("斷言響應(yīng)文本中包含:登錄成功", function () {pm.expect(resp).to.include("登錄成功");});方式3: Response body: JSON value check// 斷言預(yù)期結(jié)果中的指定key的值與預(yù)期數(shù)據(jù)一致pm.test("斷言u(píng)serid:"+uid, function () {pm.expect(userid).to.eql(((uid).toString()));});方式4: Response body : Is equal to a string// 斷言響應(yīng)文本值與預(yù)期數(shù)據(jù)完全一致pm.test("Body is correct", function () {pm.response.to.have.body("系統(tǒng)提示: 登錄成功");});
五、批量執(zhí)行
構(gòu)造外部參數(shù)化文件, 參數(shù)引用使用 {{列名}}進(jìn)行調(diào)用;
點(diǎn)擊runner,將collection文件中需要運(yùn)行的接口拖入, 瀏覽器外部參數(shù)化文件,設(shè)置參數(shù)化, 勾選 Save responses保留響應(yīng)結(jié)果
執(zhí)行結(jié)果
六、通過newman執(zhí)行
將腳本文件和環(huán)境變量文件導(dǎo)出, 導(dǎo)出后問.json格式的腳本文件
安裝newman,通過newman命令行進(jìn)行執(zhí)行
newman run api.json -e api-env.json -d data.txt -n 3
run collection腳本文本
-e 指定環(huán)境變量文件
-d 指定外部參數(shù)化數(shù)據(jù)文件
-n 指定迭代次數(shù)
期望能夠給大家?guī)韼椭? 文檔中接口抓包相關(guān)內(nèi)容, 請(qǐng)關(guān)注 軟件測(cè)試藏經(jīng)閣 公眾號(hào), 歷史文章。
最詳細(xì)的postman接口測(cè)試實(shí)戰(zhàn)教程