一借卧、Postman的其他鏈接教程
http://www.reibang.com/p/13c8017bb5c8
尤其是上面鏈接的總結(jié)非常全面客税,簡介易懂
二拣度、主要功能和遇到的問題
1短曾、Collections: 根據(jù)不同的測試需求和接口分類登舞,可自行創(chuàng)建或修改框产;后續(xù)的Runner中會用到凄杯,Runner的最大單位是Collection。
2秉宿、Sendbox:包括Url戒突、Get/Post、Headers描睦、Body膊存、Pre-request Script、Tests
Url忱叭、Get/Post(請求方式)隔崎、Headers、Body這幾塊韵丑,官方教程里面都有較詳細(xì)說明爵卒,且與測系統(tǒng)的相關(guān)性非常緊密,如果有問題撵彻,可以自己查看對應(yīng)的接口文檔或開發(fā)人員钓株,在這里不作贅述实牡;
Pre-request Script 和 Tests主要用來寫測試腳本和數(shù)據(jù)準(zhǔn)備,其中Pre-request Script里面寫此接口的前置任務(wù)轴合,Tests中主要用來寫測試腳本创坞,并通過Postman的
? ? ? ? tests["你想輸出的內(nèi)容"] = true/false;?
來實(shí)現(xiàn),true顯示為綠色PASS受葛,false顯示為紅色FAIL题涨。
其中true等價于1,false等價于0总滩,即上述代碼也可以這么寫 ?tests["你想輸出的內(nèi)容"] = 1/0;
詳見如下參數(shù):
3纲堵、Environments
Current Environment?- 可設(shè)置多個環(huán)境,根據(jù)不同的接口和需求進(jìn)行切換即可咳秉;
Globals Environment - 全局環(huán)境婉支,適用于所有Collections和Runner;
遇到的問題:當(dāng)前Environment中設(shè)置的key值名稱必須是唯一的澜建,即使沒有選中,直接用相同key值去setEnvironmentVariable蝌以,不會報錯炕舵,但實(shí)際沒有設(shè)置成功;如下案例:
“VivaVideo_Android”環(huán)境中的“DevicesID”沒有勾選跟畅,但已經(jīng)在“VivaVideo_Android”環(huán)境中存在咽筋,所以,當(dāng)在sandbox中再次設(shè)置環(huán)境變量時(如下)徊件,則新的DevicesID無法生效奸攻,但不會報錯;
? ? ? ? postman.setEnvironmentVariable("DeviceID", "aaa");? //設(shè)置環(huán)境變量DeviceID為aaa
所以虱痕,一定注意:環(huán)境中的key值不要重名睹耐。
4、Runner
Runner中可以添加本地的Data File文件部翘,包括.csv和.json兩種格式文件硝训;如果包含多條數(shù)據(jù),每次執(zhí)行一條數(shù)據(jù)新思,具體Demo可在開頭的第一個鏈接中找到窖梁;
Runner中添加本地.csv測試文件示例
Sample data files
JSON files are composed of key/value pairs:
For CSV files, the top row needs to contain variable names。如上圖“Runner .csv”夹囚。
5纵刘、Import: 將導(dǎo)出的.json文件(包括接口和環(huán)境)可以共享給其他人,然后通過import的方式荸哟,將數(shù)據(jù)和環(huán)境一起全部導(dǎo)入即可假哎;
6瞬捕、Console調(diào)試:
console.log(); 如何通過chrome的調(diào)試模式查看console的輸出內(nèi)容;
在Chrome瀏覽器中輸入chrome://flags/
搜索packed位谋,找到如下擴(kuò)展山析,點(diǎn)擊“啟用”
然后重啟Chrome和Postman即可,在Postman中任意位置點(diǎn)擊右鍵掏父,菜單中可以看到“檢查”笋轨,然后就可以開心調(diào)試了。
7赊淑、漢字輸入問題
Chrome瀏覽器版本為54.xxx時爵政,Postman中輸入漢字會出現(xiàn)異常;恢復(fù)到Chrome老版本52.xxx可正常輸入漢字陶缺。
8钾挟、Response Body圖片無法顯示
當(dāng)Interceptor是打開狀態(tài)時,請求的圖片饱岸,在Response Body中顯示不出來掺出,如下:
當(dāng)Interceptor 處于關(guān)閉狀態(tài)時,可正常顯示圖片苫费,如下:
出現(xiàn)上述問題的具體原因暫不了解汤锨,有了解的童鞋可留言說明,在此謝過百框!
9闲礼、Environment遇到的問題補(bǔ)充
Tests中寫腳本,引用環(huán)境中的變量铐维,常用的一種方式是:environment.key.
如果當(dāng)前環(huán)境中沒有配置Appkey柬泽,但Global環(huán)境中配置了Appkey,用上述environment.Appkey方式調(diào)用Appkey參數(shù)做如下操作時嫁蛇,會報 Cannot read property 'slice' of undefined. 錯誤锨并,如下所示:
當(dāng)前環(huán)境中沒有配置Appkey時,調(diào)試發(fā)現(xiàn)environment.Appkey返回的是 'undefined'棠众,slice無法識別琳疏,因此會報如上錯誤。
因此闸拿,有如上兩種方式解決以上問題:1空盼、在當(dāng)前環(huán)境中添加Appkey參數(shù),用environment.Appkey 方式調(diào)用新荤;2揽趾、使用postman.getGlobalVariable("Appkey") 方式來直接調(diào)用Global中的Appkey,如下圖所示:
三苛骨、代碼示例
1篱瞎、時間戳
因業(yè)務(wù)需求苟呐,產(chǎn)品時間戳定義為YYYYMMDDHHMMSSS,在Pre-request Script用JS組裝俐筋,并設(shè)置為全局變量CurrentTime牵素,代碼如下:
//獲取系統(tǒng)當(dāng)前時間,并組裝成固定格式時間戳
var d = new Date();
//將日期組裝成2位
var timeDate = d.getDate().toString();
if(timeDate.length == 1){
timeDate = "0" + timeDate;
}
//將小時組裝成2位
var timeHour = d.getHours().toString();
if(timeHour.length == 1){
timeHour = "0" + timeHour;
}
//將分鐘組裝成2位
var timeMin = d.getMinutes().toString();
if(timeMin.length == 1){
timeMin = "0" + timeMin;
}
//將秒組裝成3位澄者,文檔和實(shí)際接口中毫秒沒有用到笆呆,但秒那部分顯示成用3位
var timeSec = d.getSeconds().toString();
if(timeSec.length == 1){
timeSec = "0" + timeSec;
}
//將毫秒組裝成3位
var timeMilliSec = d.getMilliseconds().toString();
if(timeMilliSec.length == 1){
timeMilliSec = "00" + timeMilliSec;
}
else if(timeMilliSec.length == 2){
timeMilliSec = "0" + timeMilliSec;
}
//組裝整個時間戳
var timesDate = d.getFullYear() + (d.getMonth()+1).toString() + timeDate + timeHour + timeMin + timeSec + timeMilliSec;
postman.setGlobalVariable("CurrentTime", timesDate);
2、Tests規(guī)范
為了使用Postman僅有的UI展現(xiàn)異常測試結(jié)果粱挡,特規(guī)范了Tests中的代碼結(jié)構(gòu)赠幕,如下:
if(responseCode.code === 200){
//如果狀態(tài)碼為200,接口請求成功
tests["Request Successed"] = true;
var jsonData = JSON.parse(responseBody);
if(jsonData.result === true){
//或者是if(jQuery.isEmptyObject(jsonData) === false){询筏,此種方式用于小影和小影記接口
//返回?cái)?shù)據(jù)結(jié)果正確
/*
此處填寫業(yè)務(wù)相關(guān)內(nèi)容
*/
}else{
//返回?cái)?shù)據(jù)結(jié)果錯誤
tests["Attention:No Data. Please Check!"] = false;
}
}
else{
//接口請求失敗
tests["Waring:Request Failed. Please Fix!"] = false;
}
四榕堰、交流社區(qū)
Postman官方文檔:https://www.getpostman.com/docs/
Github:https://github.com/postmanlabs/postman-app-support
向Postman官方提問題或建議:https://github.com/postmanlabs/postman-app-support/issues/new (親測,回答非诚犹祝快)
Slack:postmancommunity