postman的使用

前言:

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

image

一、get請(qǐng)求

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

image

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

image

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

image

二、POST請(qǐng)求

1、POST請(qǐng)求一:表單提交

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

image

上圖示例中設(shè)置了請(qǐng)求方法,請(qǐng)求URL,請(qǐng)求參數(shù),但沒(méi)有設(shè)置請(qǐng)求頭。有一個(gè)要明確的點(diǎn)是,請(qǐng)求頭中的Content-Type與請(qǐng)求參數(shù)的格式之間是有關(guān)聯(lián)關(guān)系的。

image

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

2、POST請(qǐng)求二:json提交

先看下圖json提交示例:

image

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

3、post請(qǐng)求三:xml提交

先看下圖XML提交示例:

image

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

4、post請(qǐng)求四:自行設(shè)置Content-Type

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

image
image

5、POST請(qǐng)求五:二進(jìn)制文件提交

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

image

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


三、postman斷言

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

image

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

image

舉例說(shuō)明:首先設(shè)置一個(gè)斷言場(chǎng)景,根據(jù)斷言場(chǎng)景來(lái)舉例說(shuō)明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è)就是為場(chǎng)景中的第 1 條準(zhǔn)備的,判斷HTTP返回狀態(tài)碼是否為200。點(diǎn)擊這一項(xiàng),可以看到在其左邊,斷言代碼自動(dòng)添加,見(jiàn)下圖:

image

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

tests["Status code is 200"]中的tests是一個(gè)內(nèi)置對(duì)象,tests["Status code is 200"]是指為這個(gè)斷言起個(gè)名稱(chēng)叫”Status code is 200”,這個(gè)名稱(chēng)可以自行修改。

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

綜合起來(lái),這句代碼的意思是:名稱(chēng)為”Status code is 200”的斷言中,判斷responseCode對(duì)象的code屬性值(HTTP狀態(tài)碼)是否為200。


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

image

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

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

image

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

image

我們可以看出,這里面其實(shí)是JS代碼,jsonData變量其實(shí)是解析完JSON后的對(duì)象,在JS中,一個(gè)JSON對(duì)象獲取其屬性的值,直接是用jsonData.value,于是,我們把代碼給修改一下,來(lái)判斷第3條場(chǎng)景:

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

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

image

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

image

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


四、管理用例---Collections

Collections集合:也就是將多個(gè)接口請(qǐng)求可以放在一起,并管理起來(lái)。什么樣的接口請(qǐng)求可以放在同一個(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里添加請(qǐng)求

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

image

選擇Collection及填寫(xiě)好Request name、Request description后,點(diǎn)擊右下角的save to collection按鈕,則該請(qǐng)求被添加到Collection中。

image

添加成功后,可在左側(cè)列表中,collection中查看剛剛添加的請(qǐng)求。

image

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

隨著放入Collection的請(qǐng)求越來(lái)越多,混亂就又出現(xiàn)了,在找一個(gè)請(qǐng)求時(shí),要找半天,于是將collection中的請(qǐng)求分門(mén)類(lèi)別就很重要了,于是,在collection中就可以添加Folder了,將相同場(chǎng)景的請(qǐng)求放入同一個(gè)Folder中,于是就實(shí)現(xiàn)了模塊化的管理了。

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

image

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

image

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

image

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

將工程模塊化的用例管理起來(lái)后,借著這個(gè)管理起來(lái)的東風(fēng),也可以將工程模塊化的用例執(zhí)行起來(lái),即一次執(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)境,是開(kāi)發(fā)環(huán)境還是測(cè)試環(huán)境,需事先配置,大家可以下去自已嘗試一下。

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

Delay,間隔時(shí)間。用例與用例間的間隔時(shí)間。

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

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

image

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

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

1、腳本中要用到數(shù)據(jù)的地方參數(shù)化,即用一個(gè)變量來(lái)代替,每次運(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對(duì)應(yīng)腳本中的變量。

image

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

image

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


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

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

image

填寫(xiě)該環(huán)境的名稱(chēng):如測(cè)試環(huán)境,并在key和value中填寫(xiě)需要的鍵值。

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,需要開(kāi)啟Interceptor。點(diǎn)擊右上角的Interceptor 進(jìn)行安裝,并開(kāi)啟:

image

身份驗(yàn)證Authentication:

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

image

1、Basic Auth

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

image

2、Digest Auth

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

3、OAuth 1.0

postman的OAuth helper讓你簽署支持OAuth

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

4、OAuth 2.0

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言: Postman是一款功能強(qiáng)大的網(wǎng)頁(yè)調(diào)試與發(fā)送網(wǎng)頁(yè)HTTP請(qǐng)求的Chrome插件。 一、get請(qǐng)求 GET請(qǐng)...
    小喜_ww閱讀 24,074評(píng)論 2 43
  • 前言: Postman是一款功能強(qiáng)大的網(wǎng)頁(yè)調(diào)試與發(fā)送網(wǎng)頁(yè)HTTP請(qǐng)求的Chrome插件。 一、get請(qǐng)求 GET請(qǐng)...
    塵海浮沉閱讀 1,186評(píng)論 2 2
  • 內(nèi)容概要:1、環(huán)境變量、全局變量 2、腳本 3、數(shù)據(jù)池 4、mock server 一、主界面 1、History...
    孟凡了閱讀 2,039評(píng)論 0 1
  • Postman下載與安裝 不管是接口測(cè)試人員還是開(kāi)發(fā)人員大概率下都繞不開(kāi)一個(gè)工具,那就是Postman。當(dāng)然可能還...
    軟件測(cè)試汪閱讀 780評(píng)論 0 0
  • 前言 最近在做python的web后臺(tái)開(kāi)發(fā)工作,采用的是前后端分離(restful風(fēng)格)。開(kāi)發(fā)完成后,需要進(jìn)行自測(cè)...
    white_study閱讀 2,297評(píng)論 0 1

友情鏈接更多精彩內(nèi)容