接口測(cè)試:Postman 高級(jí)用法

Postman是一款強(qiáng)大的API接口測(cè)試工具。


有許多不容易發(fā)現(xiàn)的好用的功能,下面簡(jiǎn)單介紹其中一部分功能。詳細(xì)內(nèi)容可以參考文檔,官方還有視頻教程,非常方便入手。后續(xù)本博客會(huì)持續(xù)提供一些Postman使用的細(xì)節(jié)技巧,方便大家用Postman進(jìn)行接口調(diào)試。


Navigating Postman

作為一個(gè)跨平臺(tái)的API測(cè)試工具,Postman有Win/Mac/Linux客戶端,還有瀏覽器擴(kuò)展程序。不過官方建議使用客戶端,主要有以下優(yōu)點(diǎn):


自帶cookie支持:請(qǐng)求可以使用同一域名下的cookie;

內(nèi)置代理支持:可以用來轉(zhuǎn)發(fā)請(qǐng)求,分析請(qǐng)求流量;

自定義請(qǐng)求頭:不必受限于Chrome中對(duì)于請(qǐng)求頭的限制;


內(nèi)置控制臺(tái):在控制臺(tái)可以查看請(qǐng)求的詳細(xì)信息

簡(jiǎn)單來說,postman 做的事情就是模擬瀏覽器發(fā)送請(qǐng)求,接受響應(yīng)。使用Postman可以模擬任何瀏覽器發(fā)出的請(qǐng)求,可以自由地構(gòu)造請(qǐng)求地址,請(qǐng)求方法,請(qǐng)求內(nèi)容,Cookies等。Postman的響應(yīng)內(nèi)容包括完整的響應(yīng)頭,響應(yīng)時(shí)間,響應(yīng)大小,cookie等內(nèi)容。


此外,postman還提供如下方便功能:Debugging and logs??可以在控制臺(tái)對(duì)postman的請(qǐng)求進(jìn)行調(diào)試,特別是如果有pre-request或者test script時(shí),使用控制臺(tái)可以方便debug。


原生postman可以通過CMD/CTRL + ALT + C打開控制臺(tái)。

Generate code snippets:將當(dāng)前請(qǐng)求導(dǎo)出為各種版本的請(qǐng)求代碼,比如python,js,curl等,方便用命令行測(cè)試;


Proxy:如果本機(jī)不能直接訪問服務(wù)端,可以在Settings-Proxy-Using custom/system proxy設(shè)置代理;


Capturing HTTP requests:有時(shí)候用手機(jī)訪問服務(wù)端時(shí),我們可能需要借助fiddler來查看HTTP請(qǐng)求。postman也可以做相同的工作,只需要將postman作為代理轉(zhuǎn)發(fā)HTTP請(qǐng)求即可。


Certificates: 如果服務(wù)端要驗(yàn)證客戶端證書,可以在Settings-Certificates-Add Certificate配置證書;


Environments and globals

我們?cè)跇?gòu)造API請(qǐng)求時(shí),經(jīng)常會(huì)在多個(gè)地方使用相同的值,比如相同的請(qǐng)求域名,一些固定的參數(shù)值。這時(shí)候如果使用變量來保存相應(yīng)的值,然后在需要使用該值的地方用變量來代替會(huì)帶來不少好處,比如要改變這些值,只用在變量的定義地方作出改動(dòng)即可。


man是一款強(qiáng)大的API接口測(cè)試工具,有許多不容易發(fā)現(xiàn)的好用的功能,下面簡(jiǎn)單介紹其中一部分功能。詳細(xì)內(nèi)容可以參考文檔,官方還有視頻教程,非常方便入手。后續(xù)本博客會(huì)持續(xù)提供一些Postman使用的細(xì)節(jié)技巧,方便大家用Postman進(jìn)行接口調(diào)試。


作為一個(gè)跨平臺(tái)的API測(cè)試工具,Postman有Win/Mac/Linux客戶端,還有瀏覽器擴(kuò)展程序。不過官方建議使用客戶端,主要有以下優(yōu)點(diǎn):


自帶cookie支持:請(qǐng)求可以使用同一域名下的cookie;

內(nèi)置代理支持:可以用來轉(zhuǎn)發(fā)請(qǐng)求,分析請(qǐng)求流量;

自定義請(qǐng)求頭:不必受限于Chrome中對(duì)于請(qǐng)求頭的限制;


內(nèi)置控制臺(tái):在控制臺(tái)可以查看請(qǐng)求的詳細(xì)信息

簡(jiǎn)單來說,postman 做的事情就是模擬瀏覽器發(fā)送請(qǐng)求,接受響應(yīng)。使用Postman可以模擬任何瀏覽器發(fā)出的請(qǐng)求,可以自由地構(gòu)造請(qǐng)求地址,請(qǐng)求方法,請(qǐng)求內(nèi)容,Cookies等。Postman的響應(yīng)內(nèi)容包括完整的響應(yīng)頭,響應(yīng)時(shí)間,響應(yīng)大小,cookie等內(nèi)容。


此外,postman還提供如下方便功能:

Debugging and logs:可以在控制臺(tái)對(duì)postman的請(qǐng)求進(jìn)行調(diào)試,特別是如果有pre-request或者test script時(shí),使用控制臺(tái)可以方便debug。原生postman可以通過CMD/CTRL + ALT + C打開控制臺(tái)。


Generate code snippets:將當(dāng)前請(qǐng)求導(dǎo)出為各種版本的請(qǐng)求代碼,比如python,js,curl等,方便用命令行測(cè)試;


Proxy:如果本機(jī)不能直接訪問服務(wù)端,可以在Settings-Proxy-Using custom/system proxy設(shè)置代理;


Capturing HTTP requests:有時(shí)候用手機(jī)訪問服務(wù)端時(shí),我們可能需要借助fiddler來查看HTTP請(qǐng)求。postman也可以做相同的工作,只需要將postman作為代理轉(zhuǎn)發(fā)HTTP請(qǐng)求即可。


Certificates: 如果服務(wù)端要驗(yàn)證客戶端證書,可以在Settings-Certificates-Add Certificate配置證書;

Environments and globals

我們?cè)跇?gòu)造API請(qǐng)求時(shí),經(jīng)常會(huì)在多個(gè)地方使用相同的值,比如相同的請(qǐng)求域名,一些固定的參數(shù)值。這時(shí)候如果使用變量來保存相應(yīng)的值,然后在需要使用該值的地方用變量來代替會(huì)帶來不少好處,比如要改變這些值,只用在變量的定義地方作出改動(dòng)即可。


Postman定義了4類變量,極大地方便了構(gòu)造請(qǐng)求以及對(duì)結(jié)果進(jìn)行測(cè)試:


Global: 全局變量,postman中所有請(qǐng)求都可以訪問或者修改;


Environment: 構(gòu)造請(qǐng)求時(shí)可以選擇使用某個(gè)Environment,這樣就可以訪問或者修改該Environment下的所有變量;


Local: 腳本中定義的變量,只對(duì)腳本的當(dāng)前作用域有用;

Data: 只有在使用Collection Runner的時(shí)候,可以通過導(dǎo)入 Data Files 來構(gòu)造當(dāng)前測(cè)試集中用到的數(shù)據(jù)。


就像程序中的變量一樣,這里的變量也是有優(yōu)先級(jí),如果在Environment中有和Global重名的變量,會(huì)優(yōu)先使用Environment中變量。上面4個(gè)變量的優(yōu)先級(jí)由上到下依次減弱。


在postman中使用變量有著很多意想不到的好處,比如:

Collection Runner中通過Data file來構(gòu)造不同的測(cè)試數(shù)據(jù),方便快速進(jìn)行大量不同請(qǐng)求數(shù)據(jù)的測(cè)試;

可以在不同請(qǐng)求中傳遞值,比如在一個(gè)請(qǐng)求中產(chǎn)生流水號(hào),將其設(shè)置為某個(gè)變量的值,下一個(gè)請(qǐng)求即可使用該變量值。


ScriptsPostman 內(nèi)置了Node.js的運(yùn)行時(shí)環(huán)境,可以執(zhí)行JS腳本。這樣就帶來了很多激動(dòng)人心的好處,比如構(gòu)建動(dòng)態(tài)請(qǐng)求參數(shù),編寫強(qiáng)大的測(cè)試用例等。Postman中的Scripts分為2類:pre-request script: 在發(fā)送請(qǐng)求之前執(zhí)行的腳本,一般用來構(gòu)建請(qǐng)求參數(shù);


test script: 在獲取相應(yīng)之后執(zhí)行的腳本,一般用來做測(cè)試。不過需要注意,測(cè)試腳本運(yùn)行在Sandbox環(huán)境,內(nèi)置了許多JS庫支持,方便進(jìn)行測(cè)試。


Postman的Sandbox環(huán)境十分強(qiáng)大,比如:

通過提供postman.setNextRequest("request_name")實(shí)現(xiàn),可以很方便地在 Collection 中控制請(qǐng)求的執(zhí)行路徑;

提供了一系列內(nèi)置接口,方便對(duì)環(huán)境變量,請(qǐng)求或者相應(yīng)內(nèi)容進(jìn)行訪問;


提供了 CryptoJS 庫,可以方便地進(jìn)行加解密操作;

提供了 tv4 庫,可以對(duì) Json Scheme進(jìn)行測(cè)試;JSON Schema 定義了如何基于 JSON 格式描述 JSON 數(shù)據(jù)結(jié)構(gòu)的規(guī)范,進(jìn)而提供數(shù)據(jù)校驗(yàn)、文檔生成和接口數(shù)據(jù)交互控制等一系列能力。


Collections runs?Collections 是一系列請(qǐng)求的集合,postman通過collection來支持構(gòu)建請(qǐng)求工作流,自動(dòng)化測(cè)試,請(qǐng)求的導(dǎo)入導(dǎo)出,持續(xù)集成等功能。


Collection 支持以下功能:

Sharing collections:可以將Collection中的請(qǐng)求導(dǎo)出分享給其他人;


Data formats:Postman可以導(dǎo)出環(huán)境變量,甚至可以將請(qǐng)求和環(huán)境變量等一起打包為一個(gè)Json,方便遷移所有的請(qǐng)求數(shù)據(jù)。


Collection的一大用處就是一次執(zhí)行其中所有的請(qǐng)求,這就是所謂的collection run。

1. 文件上傳

圖形界面端,Collection 中的請(qǐng)求不支持POST文件上傳,不過在導(dǎo)出Collection后,可以在json文件中配置文件路徑,然后使用 newman 進(jìn)行文件上傳。詳細(xì)可以參考Postman官方博客:

Using Newman to run collections with file-post requests


不過文件上傳時(shí)必須指定文件路徑,不能用變量代替,也不能通過Data Files來設(shè)置不同的文件,不是很方便。所以我給官方提了Issue,目前該功能已經(jīng)納入 Feature,有望在后續(xù)版本中實(shí)現(xiàn)該功能。


這里就不得不贊一下Postman的社區(qū)支持了,基本上有任何問題,只要在官方Issue上提出,基本很快就會(huì)有Postman的工作人員提供支持。


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Postman是一款強(qiáng)大的API接口測(cè)試工具,有許多不容易發(fā)現(xiàn)的好用的功能,下面簡(jiǎn)單介紹其中一部分功能。詳細(xì)內(nèi)容可...
    selfboot閱讀 8,526評(píng)論 6 25
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,991評(píng)論 19 139
  • Postman 接口測(cè)試神器 更好的體驗(yàn),請(qǐng)直接打開:當(dāng)前文章。 Postman 是一個(gè)接口測(cè)試和 http 請(qǐng)求...
    IT老馬閱讀 7,103評(píng)論 4 13
  • 雪映冰輝照蝶歸云夢(mèng)醒舞花飛 【七言】平水韻 舞花飛雪映冰輝, 雪映冰輝照蝶歸。 輝照蝶歸云醒夢(mèng), 歸云醒夢(mèng)舞花飛。...
    風(fēng)音云影閱讀 1,117評(píng)論 28 24
  • 1 我在樓下抽了第三根煙,然后撥通了敏兒的電話。 “你到底有沒有男朋友?”我開門見山。 “這個(gè)問題很重要嗎?” 我...
    洞洞2閱讀 1,099評(píng)論 6 7