Postman介紹
1. 官網(wǎng)地址:https://www.getpostman.com/
2. 官方文檔地址:?https://www.getpostman.com/docs/
3. 問(wèn)題反饋官方地址:https://go.pstmn.io/app-issues
4. 官方git地址:https://github.com/postmanlabs
5. 官方實(shí)例學(xué)習(xí):http://blog.getpostman.com/case-studies/
6. 官方blog: http://blog.getpostman.com/
7.官方下載地址:https://www.getpostman.com/apps
版本分別有:
chrome插件版本
mac版本
linux版本(32/64)
windows客戶端版本(32/64)
newman: https://www.npmjs.com/package/newman,本說(shuō)明不涉及newman耗啦。
8. 介紹:
很好用的一款A(yù)PI/接口功能測(cè)試工具,很方便的塞數(shù)據(jù),查看響應(yīng)奠滑,設(shè)置檢查點(diǎn)/斷言,能進(jìn)行一定程度上的自動(dòng)化測(cè)試懂傀,但是不要指望它能代替你進(jìn)行性能測(cè)試名斟,一次批量執(zhí)行太多太久的話容易崩潰掉。
有免費(fèi)版抡驼、pro版、企業(yè)版三個(gè)版本肿仑。個(gè)人學(xué)習(xí)及日常工作免費(fèi)版完全夠用致盟。
本系列介紹中碎税,如無(wú)特殊說(shuō)明,均以postman?chrome插件版為例馏锡。
注:
POSTMAN里的各種語(yǔ)法是基于JS的雷蹂,很容易上手.
Postman安裝
Chrom版本、客戶端版本杯道、ios版本
[if !supportLists]1.?[endif]Chrom版本
方法1.Chrom應(yīng)用商店直接安裝匪煌,需要翻墻。
方法2.搜索下載postman?的crx擴(kuò)展文件党巾,把crx后綴修改成rar或者zip萎庭,然后解壓,修改解壓目錄下的”_metadata”文件夾名為”?metadata”,然后打開(kāi)chrom擴(kuò)展頁(yè)面chrome://extensions/ 齿拂,打開(kāi)開(kāi)發(fā)者模式驳规,加載已解壓的擴(kuò)展,把剛剛解壓后的擴(kuò)展加載進(jìn)去创肥。
點(diǎn)擊詳細(xì)信息达舒,在桌面創(chuàng)建快捷方式。
此種方法安裝的postman可正常使用叹侄,但不能配合Postman?Interceptor抓包使用巩搏,應(yīng)該是谷歌商店不認(rèn)此種方法安裝的原因。
2. 客戶端版本
Postman官網(wǎng)趾代,下載客戶端版本贯底,直接默認(rèn)安裝。安裝完之后會(huì)在桌面創(chuàng)建一個(gè)快捷方式撒强。
客戶端版本與chrom版本不沖突禽捆,可以同時(shí)安裝∑冢客戶端版本比chromapp版本多了編輯及調(diào)試功能胚想,但是不支持請(qǐng)求URL中包含中文,需要encode一下才能使用芽隆。日常chrom版本夠用浊服。
[if !supportLists]3.?[endif]IOS版本appstore里搜索安裝。
[if !supportLists]4.?[endif]linux版本未使用過(guò)胚吁,暫不介紹牙躺,歡迎補(bǔ)充。
注:postman官網(wǎng)可直接訪問(wèn)腕扶,不需要翻墻孽拷。
Postman?Sendbox界面介紹
一、 安裝后首次打開(kāi)postman半抱,會(huì)提示你是否需要登錄脓恕,登錄的話可以云端保存你的收藏及歷史記錄膜宋,不登陸不影響使用。
二炼幔、 進(jìn)入后就是如下圖所示的界面了激蹲。
三、我把postman主界面大概分為圖示中的三個(gè)大黃框江掩,代表不同的功能區(qū)域
左邊:
1:請(qǐng)求歷史欄
點(diǎn)擊該處可看到所有使用postman發(fā)出的請(qǐng)求記錄,在配合postmaninterceptor進(jìn)行抓包時(shí)乘瓤,抓取的請(qǐng)求記錄也在該處顯示环形。點(diǎn)擊clear?all可清除所有記錄。
2.收藏夾
就是保存所有請(qǐng)求的地方衙傀。點(diǎn)擊帶+號(hào)那個(gè)圖標(biāo) 可創(chuàng)建新的文件夾抬吟,方便歸類
3.用例文件夾
如圖所示。需要注意的是大文件夾下還可以再創(chuàng)建一級(jí)子文件夾统抬。如下圖所示:
圖中幾個(gè)菜單的意思分別是:
1重命名
2編輯
3新建子文件夾
4復(fù)制一個(gè)當(dāng)前文件夾
5導(dǎo)出當(dāng)前文件夾下所有用例
6監(jiān)控當(dāng)前文件夾(免費(fèi)版不可用)
7mock當(dāng)前文件夾用例(免費(fèi)版不可用)
8發(fā)布當(dāng)前文件夾下接口用例文檔
9刪除
最上邊那個(gè)ShareCollection是分享當(dāng)前文件夾下所有用例火本,Pro版才可用的,免費(fèi)版的就老老實(shí)實(shí)的導(dǎo)入導(dǎo)出使用吧聪建。本文最開(kāi)始中的那個(gè)大圖左上角 左數(shù)第三個(gè)按鈕 Import钙畔,就是導(dǎo)入(這只是一種導(dǎo)入方法,還有一種在設(shè)置里全局導(dǎo)入金麸,等下說(shuō))擎析。
其他的按鈕,用到了再說(shuō)挥下。
右上
4.標(biāo)簽欄
可以看待你當(dāng)前執(zhí)行的是那個(gè)接口用例
5.接口請(qǐng)求方法
目前支持:?15種請(qǐng)求方式揍魂,實(shí)際應(yīng)用中常用到GET、POST棚瘟、PUT现斋、DELETE這4中請(qǐng)求方法
6.接口請(qǐng)求URL
請(qǐng)求url,需要注意的是GET請(qǐng)求的參數(shù)是直接跟在URL后邊的偎蘸。
7.認(rèn)證
某些接口需要認(rèn)證庄蹋。
8.報(bào)文頭
請(qǐng)求報(bào)文頭。
報(bào)文頭有三列禀苦,Key是報(bào)文頭參數(shù)列蔓肯,Value是報(bào)文頭參數(shù)值列,description是說(shuō)明列
右側(cè)的Presets是可以預(yù)先設(shè)置幾組報(bào)文頭振乏,拼裝報(bào)文的時(shí)候可以直接選中使用蔗包。Bulk?Edit是文本編輯報(bào)文頭。
10.報(bào)文體
請(qǐng)求報(bào)文體慧邮,GET請(qǐng)求下不可用调限。有四種報(bào)文體類型舟陆。
其中form-data和x-www-form-urlencoded兩種類型是key-value格式的報(bào)文。Raw里可以自由選擇報(bào)文格式耻矮,binary是自由選擇文件作為報(bào)文體秦躯。
11.預(yù)處理腳本
預(yù)處理腳本,你可以理解為這里是在你接口請(qǐng)求之前執(zhí)行代碼的地方裆装,支持JS語(yǔ)言踱承。舉例說(shuō)明:
請(qǐng)求參數(shù)中有個(gè)參數(shù)time,參數(shù)值格式為YYYYMMDD24HHMMSS格式哨免,每次請(qǐng)求時(shí)該time參數(shù)為當(dāng)前時(shí)間茎活,我們可以在預(yù)處理腳本這里直接生成一個(gè)當(dāng)前時(shí)間,然后傳給postman座位環(huán)境變量琢唾,在請(qǐng)求參數(shù)中引用這個(gè)變量载荔,就可以了。如下圖采桃,上邊是生成當(dāng)前時(shí)間time懒熙,最后一句是把time存到環(huán)境變量里,這環(huán)境變量叫做Time普办。
接下來(lái)工扎,我們?cè)谡?qǐng)求報(bào)文里(報(bào)問(wèn)題、報(bào)文頭都行)引入這個(gè)環(huán)境變量Time泌豆,如下圖定庵。如果環(huán)境變量中暫時(shí)沒(méi)有Time這個(gè)變量,{{Time}}會(huì)是紅色的踪危。
如果環(huán)境變量中該變量已經(jīng)有值蔬浙,鼠標(biāo)放上去,就會(huì)顯示當(dāng)前值贞远。
這里只是簡(jiǎn)單的說(shuō)了一種使用方法畴博,更多功能,還請(qǐng)自行摸索
12.斷言/檢查點(diǎn)
有各種叫法蓝仲,但是意思是一樣的俱病,可以理解為檢查報(bào)文內(nèi)容的地方, 支持JS語(yǔ)言。比如要判斷響應(yīng)報(bào)文中某個(gè)參數(shù)值等不等于預(yù)期值袱结,就是在這里寫(xiě)代碼亮隙。
Postman自帶的接口用例中有示范如何使用,請(qǐng)自行摸索垢夹,多上網(wǎng)搜索溢吻,多練習(xí),很快就會(huì)熟起來(lái)的。
下圖是響應(yīng)促王,上圖中檢驗(yàn)的就是這個(gè)res是不是等于0:
13.環(huán)境變量集
Postman中可以預(yù)先設(shè)置幾組環(huán)境變量犀盟,使用的時(shí)候直接選擇就行,比如測(cè)試蝇狼、灰度阅畴、生產(chǎn)這三個(gè)環(huán)境的地址和請(qǐng)求里的參數(shù)值不一樣,我們就可以把地址和參數(shù)值參數(shù)化迅耘,設(shè)置三個(gè)環(huán)境變量集贱枣,三個(gè)環(huán)境變量對(duì)應(yīng)測(cè)試環(huán)境,生產(chǎn)環(huán)境颤专,灰度環(huán)境冯事。非常方便
14.設(shè)置環(huán)境變量
設(shè)置環(huán)境變量
15.發(fā)送請(qǐng)求
發(fā)送請(qǐng)求
16.保存
保存此時(shí)的請(qǐng)求報(bào)文信息
17.源代碼
這是一個(gè)很有意思的地方,這里可以方便的把你的請(qǐng)求報(bào)文轉(zhuǎn)換成各種程序語(yǔ)言血公,例如:
直接點(diǎn)擊copy就能去代碼中粘貼了。
右下
18.響應(yīng)報(bào)文體
18缓熟、19累魔、20、21這四個(gè)是響應(yīng)內(nèi)容選擇標(biāo)簽够滑,點(diǎn)擊就能看到對(duì)應(yīng)內(nèi)容
19.返回cookies
如果有垦写,就返回。
20.返回報(bào)文頭
如下圖所示:
21.斷言/檢查點(diǎn)執(zhí)行結(jié)果
12中的斷言彰触、檢查點(diǎn)執(zhí)行結(jié)果展示區(qū)域梯投,如下圖所示:
22.報(bào)文體展示方式
下圖示例相同報(bào)文三種展示方式,一般使用pretty况毅。
23.報(bào)文體展示類型
僅在Pretty模式下可用
該圖標(biāo)推測(cè)為自動(dòng)換行圖標(biāo)~
24.報(bào)文體正文
25.httpstatus響應(yīng)碼及耗時(shí)
Httpstatus及請(qǐng)求耗時(shí)分蓖,客戶端版本的postman這里還會(huì)多出一個(gè)響應(yīng)報(bào)文大小。
為復(fù)制圖標(biāo)尔许,點(diǎn)擊就復(fù)制響應(yīng)報(bào)文體至剪切板么鹤,
為搜索圖標(biāo),可以在響應(yīng)報(bào)文中搜索制定內(nèi)容味廊。
補(bǔ)充
postman interceptor
這是另外一個(gè)插件蒸甜,作用是用來(lái)配合postman進(jìn)行抓包,對(duì)余佛,你沒(méi)看錯(cuò)柠新,就是抓包,但是只能抓請(qǐng)求數(shù)據(jù)辉巡,響應(yīng)數(shù)據(jù)不能獲取恨憎。該插件需要從chrome應(yīng)用商店安裝才能正常使用,使用加載離線安裝包方法安裝的該擴(kuò)展不能正常抓包红氯,即在postman中不能正常使用
下面說(shuō)這個(gè)擴(kuò)展的用法:
1. 安裝好這個(gè)擴(kuò)展后框咙,首先在chrome瀏覽器擴(kuò)展欄會(huì)出現(xiàn)這個(gè)圖標(biāo)
2. 點(diǎn)擊該圖標(biāo)咕痛,在點(diǎn)擊off切換到on狀態(tài)
3. 在Filter requests 欄里輸入自己想要抓包的域名,支持*字符喇嘱,如下圖所示茉贡,代表所有請(qǐng)求url中包含baidu.com的請(qǐng)求都會(huì)被記錄。最后記得要點(diǎn)?apply 應(yīng)用保存者铜。這個(gè)保存僅能應(yīng)用本次抓包腔丧,如果關(guān)掉瀏覽器再次打開(kāi)的話需要重新配置。
4.打開(kāi)postman作烟,點(diǎn)擊右上角的interceptor圖標(biāo)愉粤,切換到on狀態(tài)
當(dāng)處于on狀態(tài)時(shí),圖標(biāo)是變橙色的拿撩。
5. 打開(kāi)請(qǐng)求記錄竞思,
當(dāng)訪問(wèn)想要抓包的網(wǎng)頁(yè)時(shí),請(qǐng)求記錄會(huì)被記錄在這里鸟廓。
設(shè)置
右上角的小扳手就是設(shè)置按鈕
要注意的一點(diǎn)是括改,chrome版本和client版本的設(shè)置里有些許不同,client版本的設(shè)置里會(huì)多一點(diǎn)點(diǎn)內(nèi)容探赫,但是大致是一樣的型宙,此處以chrome版本為例說(shuō)明。
點(diǎn)擊小扳手伦吠,選擇settings(其他幾個(gè)按鈕分別是結(jié)果連接:文檔妆兑、安全、支持毛仪、facebook‘反正你也上不去’)
新彈出的就是設(shè)置頁(yè)面搁嗓。從左至右?guī)讉€(gè)標(biāo)簽依次為:通用設(shè)置、主題箱靴、快捷鍵谱姓、數(shù)據(jù)、擴(kuò)展(NODE-js)刨晴、同步屉来、關(guān)于。
1.通用設(shè)置
可以看到通用設(shè)置標(biāo)簽有行大寫(xiě)的字母狈癞,分別是?REQUEST(請(qǐng)求)茄靠、HEADERS(報(bào)文頭)、USERINTERFACE(用戶界面)蝶桶、INTERCEPTOR(攔截器)
每個(gè)按鈕是干啥用的我就不一一翻譯了慨绳,你們google就行了......
2.主題
白天、黑夜
3.快捷鍵
4.數(shù)據(jù)
敲黑板了,劃重點(diǎn)了脐雪,這里是postman數(shù)據(jù)導(dǎo)入和導(dǎo)出的地方厌小,記住,是所有數(shù)據(jù)战秋,包括你所有的的collection和environments璧亚。
export,導(dǎo)出脂信,備份癣蟋,隨你咋叫都行。導(dǎo)出的是個(gè)json文件狰闪,如果有批量修改的用例信息疯搅,比如你所有接口的IP變更了,就可以在導(dǎo)出的json文件里ctrl+H批量修改埋泵。
Import這里是導(dǎo)入數(shù)據(jù)的地方幔欧。
5. Adds-ons
請(qǐng)自動(dòng)忽略這個(gè)
6. 同步數(shù)據(jù)到云端,前提是你有一個(gè)postman帳號(hào)丽声。
Re-sync,立即同步琐馆;Disabel sync,禁止同步恒序。
7. 關(guān)于
當(dāng)前postman的版本信息及其他相關(guān)信息,在給postman提交bug時(shí)可以從這里復(fù)制谁撼。
?
Runner 介紹
概述
Runner是用來(lái)批量調(diào)用collection里某個(gè)文件夾里的全部接口的歧胁。
(注意,是文件夾內(nèi)所有接口,可以是一級(jí)文件夾厉碟,也可是二級(jí)文件夾)
示意圖
在Sendbox界面里左上角打開(kāi)runner喊巍,runner界面如圖所示
說(shuō)明
1.?歷史記錄
歷史執(zhí)行記錄
2.?導(dǎo)入
導(dǎo)入別人或之前導(dǎo)出的runner結(jié)果以方便查看。
3.?當(dāng)前執(zhí)行
4.?執(zhí)行詳情
點(diǎn)擊這個(gè)會(huì)跳到歷史記錄
5.選擇用例集合
選擇需要執(zhí)行的用例集合
6.環(huán)境變量
選擇執(zhí)行時(shí)需要使用的環(huán)境變量
7.迭代次數(shù)
輸入需要執(zhí)行的次數(shù)
注意:在使用csv文件進(jìn)行參數(shù)化時(shí)箍鼓,最好有多少組數(shù)據(jù)崭参,這里就填多少。
8.延時(shí)/間隔
每個(gè)請(qǐng)求之間的間隔
9.參數(shù)文件
在批量執(zhí)行時(shí)款咖,如果遇到想?yún)?shù)化的情況何暮,在此處配置。舉例:
一個(gè)登錄請(qǐng)求為:http://127.0.0.1:80/login,請(qǐng)求方式為post铐殃,請(qǐng)求data為:
{
"account": "zhangsan",
"pwd": "123"
}
其中account和pwd分別是帳號(hào)海洼、密碼,在實(shí)際中富腊,有一大批帳號(hào)需要登錄坏逢,這時(shí)可以利用runner的參數(shù)化來(lái)解決。在本例中,需要把a(bǔ)ccount和pwd的值參數(shù)化是整,首先在請(qǐng)求時(shí)先定義這兩個(gè)值為分別變量{{user}}和{{密碼}}如下:
{
"account": "{{user}}",
"pwd": "{{mima}}"
}
然后創(chuàng)建一個(gè)csv格式的文件肖揣,文件首行為兩個(gè)變量名,其余各行值浮入,如下圖所示:
然后選中這個(gè)csv文件
點(diǎn)擊preview龙优,可以看到參數(shù)信息
,然后就可以開(kāi)始了舵盈。
10.監(jiān)控
Pro收費(fèi)版本才有的功能陋率,本文不作介紹
11.newman
本教程不做介紹
12.doc文檔
Runner的相關(guān)官方英文文檔。
13.當(dāng)前結(jié)果
會(huì)顯示tests的執(zhí)行結(jié)果
14.開(kāi)始按鈕
?
?
常用操作說(shuō)明
環(huán)境變量
環(huán)境變量就是我們存放一組公共數(shù)據(jù)的地方秽晚,比如我有100個(gè)接口瓦糟,三套環(huán)境(開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境赴蝇、生產(chǎn)環(huán)境)菩浙,我們沒(méi)有必要把這100個(gè)接口根據(jù)三個(gè)環(huán)境分別寫(xiě)一套用例。只需要維護(hù)一套用例腳本句伶,然后設(shè)置對(duì)應(yīng)三個(gè)環(huán)境的變量就行了劲蜻。
如下圖所示:
這樣對(duì)比應(yīng)該能看出,我們?cè)谡?qǐng)求接口的時(shí)候考余,只需要把請(qǐng)求地址用參數(shù)?{{這里是地址}}?替換掉就行了先嬉。在測(cè)試的時(shí)候,測(cè)哪個(gè)環(huán)境就切換到哪個(gè)環(huán)境的環(huán)境變量組楚堤。
下圖是我的請(qǐng)求:
另外疫蔓,在postman的腳本里,還可以用postman.setEnvironmentVariable("key",value);來(lái)直接設(shè)置環(huán)境變量身冬,下面就會(huì)說(shuō)到衅胀。
Pre-request Script
顧名思義,這是一個(gè)在請(qǐng)求前執(zhí)行腳本的地方酥筝。
舉例說(shuō)明:
還是剛剛那個(gè)接口滚躯,請(qǐng)求時(shí)需要帶上YYYYMMDD格式的當(dāng)天日期作為參數(shù)值。那么我們就可以在這里用JS語(yǔ)法生成一個(gè)當(dāng)前時(shí)間nowtime嘿歌,然后把這個(gè)nowtime用上邊說(shuō)道的postman.setEnvironmentVariable(key,value)設(shè)置為環(huán)境變量NOWTIME掸掏,在請(qǐng)求的時(shí)候,在引用這個(gè)變量NOWTIME就行了宙帝。
如下圖所示是我的測(cè)試接口
關(guān)聯(lián)
這是我被問(wèn)到最多的一個(gè)問(wèn)題......
舉例說(shuō)明:
現(xiàn)有A阅束、B兩個(gè)接口,A接口是充值接口茄唐,充值成功會(huì)返回一個(gè)充值訂單息裸;B接口是充值訂單查詢接口蝇更,需要用A接口返回的充值訂單作為請(qǐng)求參數(shù)去查詢充值結(jié)果。
如下圖所示
現(xiàn)在B接口需要用A接口返回的?"orderId": "20171010164227575431843" 作為入?yún)⑷ゲ樵兒襞瑁敲次覀兛梢栽贏接口的tests里這么寫(xiě):
這樣年扩,在充值成功時(shí),就會(huì)自動(dòng)把返回的orderId寫(xiě)進(jìn)環(huán)境變量{{充值訂單}}访圃,我們?cè)贐接口請(qǐng)求的時(shí)候厨幻,直接引用這個(gè)變量就行了。