Postman 使用方法詳解

前言:

Postman是一款功能強(qiáng)大的網(wǎng)頁調(diào)試與發(fā)送網(wǎng)頁HTTP請求的Chrome插件岭洲。

image

一扮超、get請求

GET請求:點(diǎn)擊Params扒腕,輸入?yún)?shù)及value擂达,可輸入多個(gè)土铺,即時(shí)顯示在URL鏈接上,所以板鬓,GET請求的請求頭與請求參數(shù)如在接口文檔中無特別聲明時(shí)悲敷,可以不填。

image

GET響應(yīng):右上角顯示響應(yīng)HTTP狀態(tài)碼俭令、請求的耗時(shí)后德。

image

需特別注意的是注意區(qū)別HTTP狀態(tài)碼與響應(yīng)正文中的狀態(tài)碼,只有HTTP狀態(tài)碼是200時(shí)抄腔,才代表這個(gè)接口請求是正確的瓢湃,這個(gè)是HTTP協(xié)議定義的,而響應(yīng)正文的狀態(tài)碼赫蛇,是程序員自已定義的箱季,可以是200,也可以定義為其它值棍掐,是為了讓接口使用者去區(qū)分正常數(shù)據(jù)與異常數(shù)據(jù)藏雏。

image

二、POST請求

1作煌、POST請求一:表單提交

先看下圖POST表單提交示例:

image

上圖示例中設(shè)置了請求方法掘殴,請求URL,請求參數(shù)粟誓,但沒有設(shè)置請求頭奏寨。有一個(gè)要明確的點(diǎn)是,請求頭中的Content-Type與請求參數(shù)的格式之間是有關(guān)聯(lián)關(guān)系的鹰服。

image

當(dāng)選擇x-www-form-urlencoded的參數(shù)方式后病瞳,postman自動(dòng)的幫我們設(shè)置了Content-Type,所以不需要我們?nèi)斯じ深A(yù)悲酷,這就是使用一款流行工具的好處套菜,把一些基礎(chǔ)點(diǎn)都幫我們處理了。

2设易、POST請求二:json提交

先看下圖json提交示例:

image

上圖中逗柴,當(dāng)我們選擇了JSON(application/json)時(shí),postman同樣幫我們自動(dòng)設(shè)置了Content-Type顿肺,可以自行的去查看Headers.

3戏溺、post請求三:xml提交

先看下圖XML提交示例:

image

上圖中渣蜗,當(dāng)我們選擇了XML(text/xml)時(shí),postman同樣幫我們自動(dòng)設(shè)置了Content-Type旷祸,可以自行的去查看Headers.

4耕拷、post請求四:自行設(shè)置Content-Type

HTTP的POST請求的參數(shù),都是放在請求正文中的托享,只是根據(jù)Content-Type來判斷請求正文的格式斑胜,那么我們同樣可以在表單提交時(shí),選擇raw嫌吠,然后自行設(shè)置Content-Type為application/x-www-form-urlencoded。

image
image

5掺炭、POST請求五:二進(jìn)制文件提交

先看下圖二進(jìn)制文件示例:

image

Body下辫诅,選擇binary,在這里你可以發(fā)送視頻涧狮、音頻炕矮、文本等文件。


三者冤、postman斷言

一個(gè)完整的接口測試肤视,包括:請求->獲取響應(yīng)正文->斷言,我們已經(jīng)知道了請求與獲取響應(yīng)正文涉枫,下面來介紹如何用postman進(jìn)行斷言邢滑。

image

這個(gè)”Tests”就是我們需要處理斷言的地方,postman很人性化的幫我們把斷言所用的函數(shù)全給準(zhǔn)備好了:

image

舉例說明:首先設(shè)置一個(gè)斷言場景愿汰,根據(jù)斷言場景來舉例說明Postman斷言如何使用困后。

1、判斷HTTP返回狀態(tài)碼為200

2衬廷、判斷響應(yīng)正文中是否包含:"statusCode":200

3摇予、解析響應(yīng)正文,并判斷statusCode的值是200吗跋,message的值是”Success”



第一步:在SNIPPETS中侧戴,往下拉妥泉,有一項(xiàng)”Status code:Code is 200”霸饲,這個(gè)就是為場景中的第 1 條準(zhǔn)備的,判斷HTTP返回狀態(tài)碼是否為200品姓。點(diǎn)擊這一項(xiàng)疆拘,可以看到在其左邊本缠,斷言代碼自動(dòng)添加,見下圖:

image

解釋一下這句代碼的意思:

tests["Status code is 200"]中的tests是一個(gè)內(nèi)置對象入问,tests["Status code is 200"]是指為這個(gè)斷言起個(gè)名稱叫”Status code is 200”丹锹,這個(gè)名稱可以自行修改稀颁。

responseCode.code === 200中的responseCode是內(nèi)置對象,responseCode對象中有個(gè)屬性是code楣黍,是指HTTP狀態(tài)碼的code匾灶,判斷code是否為200.

綜合起來,這句代碼的意思是:名稱為”Status code is 200”的斷言中租漂,判斷responseCode對象的code屬性值(HTTP狀態(tài)碼)是否為200阶女。


第二步:同樣在SNIPPETS中,找到一項(xiàng)”Response body:Contains string”哩治,這個(gè)就是為場景中的第2條準(zhǔn)備的秃踩,判斷響應(yīng)正文中的字段。點(diǎn)擊后业筏,在其左邊憔杨,斷言代碼自動(dòng)添加,見下圖:

image

其中我們需要修改想要在響應(yīng)報(bào)文中找到的內(nèi)容:

tests["Body matches string"] = responseBody.has('"statusCode":200'); //對照第2條場景:判斷響應(yīng)正文中是否包含:"statusCode":200

image

第三步:我們需要解析JSON串了蒜胖,所以消别,在SNIPPETS中找到”Response body:JSON value check”并點(diǎn)擊,在其左邊台谢,斷言代碼自動(dòng)添加寻狂,見下圖:

image

我們可以看出,這里面其實(shí)是JS代碼朋沮,jsonData變量其實(shí)是解析完JSON后的對象蛇券,在JS中,一個(gè)JSON對象獲取其屬性的值樊拓,直接是用jsonData.value怀读,于是,我們把代碼給修改一下骑脱,來判斷第3條場景:

tests["response statusCode"] = jsonData.statusCode === 200; //判斷statusCode的值是200

tests["response message"] = jsonData.message === 'Success'; //判斷message的值是”Success”

image

這樣一來菜枷,我們可以看到一共有Tests的斷言4個(gè),點(diǎn)擊Send叁丧,發(fā)送請求啤誊,在響應(yīng)區(qū)內(nèi)可以看到如下圖:表示斷言全部通過。

image

以上拥娄,SNIPPETS中還有很多的函數(shù)提供給我們,努力學(xué)習(xí)吧~~~


四蚊锹、管理用例---Collections

Collections集合:也就是將多個(gè)接口請求可以放在一起,并管理起來稚瘾。什么樣的接口請求可以放在同一個(gè)collection里牡昆?

在這里告訴大家可以這樣:一個(gè)工程一個(gè)Collection,這樣方便查找及統(tǒng)一處理數(shù)據(jù)。

image

第一步:創(chuàng)建Collections

點(diǎn)擊上圖中的帶+號(hào)的圖標(biāo)丢烘,輸入Name:”demo”柱宦,Description:”demo for Collections”,點(diǎn)擊Create按鈕即創(chuàng)建成功一個(gè)Collections.

image

第二步播瞳,在Collections里添加請求

在右側(cè)準(zhǔn)備好接口請求的所有數(shù)據(jù)掸刊,并驗(yàn)證后,點(diǎn)擊save按鈕赢乓。

image

選擇Collection及填寫好Request name忧侧、Request description后,點(diǎn)擊右下角的save to collection按鈕牌芋,則該請求被添加到Collection中蚓炬。

image

添加成功后,可在左側(cè)列表中躺屁,collection中查看剛剛添加的請求肯夏。

image

第三步:Collection精細(xì)化---Folder

隨著放入Collection的請求越來越多,混亂就又出現(xiàn)了楼咳,在找一個(gè)請求時(shí),要找半天烛恤,于是將collection中的請求分門類別就很重要了母怜,于是,在collection中就可以添加Folder了缚柏,將相同場景的請求放入同一個(gè)Folder中苹熏,于是就實(shí)現(xiàn)了模塊化的管理了。

點(diǎn)擊下圖中的Add Folder后币喧,即可創(chuàng)建Folder轨域。

image

添加上Folder name,即模塊名稱后杀餐,點(diǎn)擊Create干发,創(chuàng)建成功一個(gè)Folder。

image

接下來史翘,只需要把相同場景的請求拖入相同的Folder即可枉长,這樣就實(shí)現(xiàn)了模塊化的管理了。模塊化以后的結(jié)構(gòu):

image

第四步:運(yùn)行Collection

將工程模塊化的用例管理起來后琼讽,借著這個(gè)管理起來的東風(fēng)必峰,也可以將工程模塊化的用例執(zhí)行起來,即一次執(zhí)行一整個(gè)collection里的用例钻蹬,或者執(zhí)行一個(gè)collection里的某一個(gè)Folder里的用例吼蚁。

點(diǎn)擊下圖中的Run:

image

下圖中的”Choose collection or folder”,如果選擇demo问欠,表示運(yùn)行demo這一整個(gè)collection的用例肝匆,如果選擇GET粒蜈,即只運(yùn)行demo下的GET模塊下的用例。

Environment术唬,即運(yùn)行環(huán)境薪伏,是開發(fā)環(huán)境還是測試環(huán)境,需事先配置粗仓,大家可以下去自已嘗試一下嫁怀。

Iterations,即重復(fù)運(yùn)行次數(shù)借浊。會(huì)將選擇好的collection中folder重復(fù)運(yùn)行塘淑。

Delay,間隔時(shí)間蚂斤。用例與用例間的間隔時(shí)間存捺。

Data,外部數(shù)據(jù)加載曙蒸,即用例的參數(shù)化捌治,可以與Iterations結(jié)合起來用,實(shí)現(xiàn)參數(shù)化纽窟,也就是數(shù)據(jù)驅(qū)動(dòng)肖油。

Run Demo,點(diǎn)擊運(yùn)行臂港,運(yùn)行完成后森枪,即可得出一個(gè)簡易的聚合報(bào)告。

image

第五步:Collection運(yùn)行參數(shù)化

在Iterations重復(fù)運(yùn)行時(shí)审孽,如果某個(gè)用例希望每次運(yùn)行時(shí)县袱,使用不同的數(shù)據(jù),那么應(yīng)該滿足如下2個(gè)條件:

1佑力、腳本中要用到數(shù)據(jù)的地方參數(shù)化式散,即用一個(gè)變量來代替,每次運(yùn)行時(shí)打颤,重新獲取當(dāng)前的運(yùn)行數(shù)據(jù)杂数。

2、需要有一個(gè)數(shù)據(jù)池瘸洛,這個(gè)數(shù)據(jù)池里的數(shù)據(jù)條數(shù)揍移,要與重復(fù)運(yùn)行的次數(shù)相同。


Postman的runner給我們提供了Iterations的輸入項(xiàng)反肋,也提供了Data的文件選擇項(xiàng)那伐,也就是意味著數(shù)據(jù)池是一個(gè)外部文件。

如果Iterations里的值為2,那么罕邀,這個(gè)外部文件里也應(yīng)該有兩條數(shù)據(jù)畅形,postman希望我們這個(gè)外部文件里的數(shù)據(jù)是一個(gè)json(當(dāng)然也可以是其它

數(shù)據(jù)格式).

為了表示兩條數(shù)據(jù),這個(gè)json應(yīng)該是一個(gè)list結(jié)構(gòu)(如下圖)诉探,同時(shí)日熬,由于腳本要用到數(shù)據(jù)的地方需要參數(shù)化,需要變量肾胯,所以竖席,每一條數(shù)據(jù)應(yīng)該就是一個(gè)map,map的key對應(yīng)腳本中的變量敬肚。

image

上圖中表示提供了一個(gè)msg的變量毕荐,每次運(yùn)行對應(yīng)不同的值,預(yù)示著在腳本中可以用到msg這個(gè)變量艳馒,那在腳本中如何用憎亚?

image

如上圖斷言中用data.msg,其中data是個(gè)內(nèi)置對象弄慰,即代表每一次運(yùn)行的那個(gè)map數(shù)據(jù)第美,所以,可以用data.msg來獲取每次運(yùn)行的對應(yīng)的值陆爽,當(dāng)然什往,由于是個(gè)map,也可以用data[‘msg’]來獲取對應(yīng)的值墓陈。


五恶守、設(shè)置環(huán)境變量

有時(shí)需要在不同的環(huán)境下跑相同的測試第献,此時(shí)可以通過設(shè)置環(huán)境變量來動(dòng)態(tài)選擇贡必。點(diǎn)擊右上角的設(shè)置按鈕-Manage Environments:

image

填寫該環(huán)境的名稱:如測試環(huán)境,并在key和value中填寫需要的鍵值庸毫。

image
image

使用這些鍵值的時(shí)候只需要加上兩個(gè)花括號(hào)引用key仔拟,例如: {{url_base}}/admin/offer/

image

建立多個(gè)環(huán)境時(shí),key通常都是相同的飒赃,只是value不同利花。創(chuàng)建好所有環(huán)境后,在跑用例的時(shí)候在右上角下拉列表選擇需要的環(huán)境就可以了载佳。

image

六炒事、身份驗(yàn)證Authentication

顯示browser cookies,需要開啟Interceptor蔫慧。點(diǎn)擊右上角的Interceptor 進(jìn)行安裝挠乳,并開啟:

image

身份驗(yàn)證Authentication:

postman有一個(gè)helpers可以幫助我們簡化一些重復(fù)和復(fù)雜的任務(wù)。當(dāng)前的一套helpers可以幫助你解決一些authentication protocols的問題。

image

1睡扬、Basic Auth

填寫用戶名和密碼盟蚣,點(diǎn)擊update request后,headers中自動(dòng)添加Authorization卖怜。圖中用戶名和密碼均使用的key變量:

image

2屎开、Digest Auth

要比Basic Auth復(fù)雜的多。使用當(dāng)前填寫的值生成authorization header马靠。所以在生成header之前要確保設(shè)置的正確性奄抽。如果當(dāng)前的header已經(jīng)存在,postman會(huì)移除之前的header虑粥。

3如孝、OAuth 1.0

postman的OAuth helper讓你簽署支持OAuth

1.0基于身份驗(yàn)證的請求。OAuth不用獲取access token,你需要去API提供者獲取的娩贷。OAuth 1.0可以在header或者查詢參數(shù)中設(shè)置value第晰。

4、OAuth 2.0

postman支持獲得OAuth 2.0 token并添加到requests中彬祖。



postman竟然如此之強(qiáng)大茁瘦!我們還有什么理由去拒絕?介紹完之后储笑,可能新的問題又來了甜熔,如何與jenkins結(jié)合實(shí)現(xiàn)持續(xù)集成?

所以突倍,產(chǎn)生了個(gè)newman腔稀,是個(gè)命令行運(yùn)行postman請求的工具,建議大家自行去研究下羽历,因?yàn)槟谴_實(shí)就只是個(gè)命令行的工具而已焊虏!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市秕磷,隨后出現(xiàn)的幾起案子诵闭,更是在濱河造成了極大的恐慌,老刑警劉巖澎嚣,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疏尿,死亡現(xiàn)場離奇詭異,居然都是意外死亡易桃,警方通過查閱死者的電腦和手機(jī)褥琐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來晤郑,“玉大人敌呈,你說我怎么就攤上這事嚼鹉。” “怎么了驱富?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵锚赤,是天一觀的道長。 經(jīng)常有香客問我褐鸥,道長线脚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任叫榕,我火速辦了婚禮浑侥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘晰绎。我一直安慰自己寓落,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布荞下。 她就那樣靜靜地躺著伶选,像睡著了一般。 火紅的嫁衣襯著肌膚如雪尖昏。 梳的紋絲不亂的頭發(fā)上仰税,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天,我揣著相機(jī)與錄音抽诉,去河邊找鬼陨簇。 笑死,一個(gè)胖子當(dāng)著我的面吹牛迹淌,可吹牛的內(nèi)容都是我干的河绽。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼唉窃,長吁一口氣:“原來是場噩夢啊……” “哼耙饰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起句携,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤榔幸,失蹤者是張志新(化名)和其女友劉穎允乐,沒想到半個(gè)月后矮嫉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡牍疏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年蠢笋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鳞陨。...
    茶點(diǎn)故事閱讀 38,809評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡昨寞,死狀恐怖瞻惋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情援岩,我是刑警寧澤歼狼,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站享怀,受9級(jí)特大地震影響羽峰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜添瓷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一梅屉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鳞贷,春花似錦坯汤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至咱筛,卻和暖如春庶近,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背眷蚓。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工鼻种, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人沙热。 一個(gè)月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓叉钥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親篙贸。 傳聞我的和親對象是個(gè)殘疾皇子投队,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評論 2 351