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的工作人員提供支持。