Postman是一款強大的API接口測試工具。
有許多不容易發(fā)現(xiàn)的好用的功能,下面簡單介紹其中一部分功能。詳細(xì)內(nèi)容可以參考文檔,官方還有視頻教程,非常方便入手。后續(xù)本博客會持續(xù)提供一些Postman使用的細(xì)節(jié)技巧,方便大家用Postman進行接口調(diào)試。
Navigating Postman
作為一個跨平臺的API測試工具,Postman有Win/Mac/Linux客戶端,還有瀏覽器擴展程序。不過官方建議使用客戶端,主要有以下優(yōu)點:
自帶cookie支持:請求可以使用同一域名下的cookie;
內(nèi)置代理支持:可以用來轉(zhuǎn)發(fā)請求,分析請求流量;
自定義請求頭:不必受限于Chrome中對于請求頭的限制;
內(nèi)置控制臺:在控制臺可以查看請求的詳細(xì)信息
簡單來說,postman 做的事情就是模擬瀏覽器發(fā)送請求,接受響應(yīng)。使用Postman可以模擬任何瀏覽器發(fā)出的請求,可以自由地構(gòu)造請求地址,請求方法,請求內(nèi)容,Cookies等。Postman的響應(yīng)內(nèi)容包括完整的響應(yīng)頭,響應(yīng)時間,響應(yīng)大小,cookie等內(nèi)容。
此外,postman還提供如下方便功能:Debugging and logs??可以在控制臺對postman的請求進行調(diào)試,特別是如果有pre-request或者test script時,使用控制臺可以方便debug。
原生postman可以通過CMD/CTRL + ALT + C打開控制臺。
Generate code snippets:將當(dāng)前請求導(dǎo)出為各種版本的請求代碼,比如python,js,curl等,方便用命令行測試;
Proxy:如果本機不能直接訪問服務(wù)端,可以在Settings-Proxy-Using custom/system proxy設(shè)置代理;
Capturing HTTP requests:有時候用手機訪問服務(wù)端時,我們可能需要借助fiddler來查看HTTP請求。postman也可以做相同的工作,只需要將postman作為代理轉(zhuǎn)發(fā)HTTP請求即可。
Certificates: 如果服務(wù)端要驗證客戶端證書,可以在Settings-Certificates-Add Certificate配置證書;
Environments and globals
我們在構(gòu)造API請求時,經(jīng)常會在多個地方使用相同的值,比如相同的請求域名,一些固定的參數(shù)值。這時候如果使用變量來保存相應(yīng)的值,然后在需要使用該值的地方用變量來代替會帶來不少好處,比如要改變這些值,只用在變量的定義地方作出改動即可。
man是一款強大的API接口測試工具,有許多不容易發(fā)現(xiàn)的好用的功能,下面簡單介紹其中一部分功能。詳細(xì)內(nèi)容可以參考文檔,官方還有視頻教程,非常方便入手。后續(xù)本博客會持續(xù)提供一些Postman使用的細(xì)節(jié)技巧,方便大家用Postman進行接口調(diào)試。
作為一個跨平臺的API測試工具,Postman有Win/Mac/Linux客戶端,還有瀏覽器擴展程序。不過官方建議使用客戶端,主要有以下優(yōu)點:
自帶cookie支持:請求可以使用同一域名下的cookie;
內(nèi)置代理支持:可以用來轉(zhuǎn)發(fā)請求,分析請求流量;
自定義請求頭:不必受限于Chrome中對于請求頭的限制;
內(nèi)置控制臺:在控制臺可以查看請求的詳細(xì)信息
簡單來說,postman 做的事情就是模擬瀏覽器發(fā)送請求,接受響應(yīng)。使用Postman可以模擬任何瀏覽器發(fā)出的請求,可以自由地構(gòu)造請求地址,請求方法,請求內(nèi)容,Cookies等。Postman的響應(yīng)內(nèi)容包括完整的響應(yīng)頭,響應(yīng)時間,響應(yīng)大小,cookie等內(nèi)容。
此外,postman還提供如下方便功能:
Debugging and logs:可以在控制臺對postman的請求進行調(diào)試,特別是如果有pre-request或者test script時,使用控制臺可以方便debug。原生postman可以通過CMD/CTRL + ALT + C打開控制臺。
Generate code snippets:將當(dāng)前請求導(dǎo)出為各種版本的請求代碼,比如python,js,curl等,方便用命令行測試;
Proxy:如果本機不能直接訪問服務(wù)端,可以在Settings-Proxy-Using custom/system proxy設(shè)置代理;
Capturing HTTP requests:有時候用手機訪問服務(wù)端時,我們可能需要借助fiddler來查看HTTP請求。postman也可以做相同的工作,只需要將postman作為代理轉(zhuǎn)發(fā)HTTP請求即可。
Certificates: 如果服務(wù)端要驗證客戶端證書,可以在Settings-Certificates-Add Certificate配置證書;
Environments and globals
我們在構(gòu)造API請求時,經(jīng)常會在多個地方使用相同的值,比如相同的請求域名,一些固定的參數(shù)值。這時候如果使用變量來保存相應(yīng)的值,然后在需要使用該值的地方用變量來代替會帶來不少好處,比如要改變這些值,只用在變量的定義地方作出改動即可。
Postman定義了4類變量,極大地方便了構(gòu)造請求以及對結(jié)果進行測試:
Global: 全局變量,postman中所有請求都可以訪問或者修改;
Environment: 構(gòu)造請求時可以選擇使用某個Environment,這樣就可以訪問或者修改該Environment下的所有變量;
Local: 腳本中定義的變量,只對腳本的當(dāng)前作用域有用;
Data: 只有在使用Collection Runner的時候,可以通過導(dǎo)入 Data Files 來構(gòu)造當(dāng)前測試集中用到的數(shù)據(jù)。
就像程序中的變量一樣,這里的變量也是有優(yōu)先級,如果在Environment中有和Global重名的變量,會優(yōu)先使用Environment中變量。上面4個變量的優(yōu)先級由上到下依次減弱。
在postman中使用變量有著很多意想不到的好處,比如:
Collection Runner中通過Data file來構(gòu)造不同的測試數(shù)據(jù),方便快速進行大量不同請求數(shù)據(jù)的測試;
可以在不同請求中傳遞值,比如在一個請求中產(chǎn)生流水號,將其設(shè)置為某個變量的值,下一個請求即可使用該變量值。
ScriptsPostman 內(nèi)置了Node.js的運行時環(huán)境,可以執(zhí)行JS腳本。這樣就帶來了很多激動人心的好處,比如構(gòu)建動態(tài)請求參數(shù),編寫強大的測試用例等。Postman中的Scripts分為2類:pre-request script: 在發(fā)送請求之前執(zhí)行的腳本,一般用來構(gòu)建請求參數(shù);
test script: 在獲取相應(yīng)之后執(zhí)行的腳本,一般用來做測試。不過需要注意,測試腳本運行在Sandbox環(huán)境,內(nèi)置了許多JS庫支持,方便進行測試。
Postman的Sandbox環(huán)境十分強大,比如:
通過提供postman.setNextRequest("request_name")實現(xiàn),可以很方便地在 Collection 中控制請求的執(zhí)行路徑;
提供了一系列內(nèi)置接口,方便對環(huán)境變量,請求或者相應(yīng)內(nèi)容進行訪問;
提供了 CryptoJS 庫,可以方便地進行加解密操作;
提供了 tv4 庫,可以對 Json Scheme進行測試;JSON Schema 定義了如何基于 JSON 格式描述 JSON 數(shù)據(jù)結(jié)構(gòu)的規(guī)范,進而提供數(shù)據(jù)校驗、文檔生成和接口數(shù)據(jù)交互控制等一系列能力。
Collections runs?Collections 是一系列請求的集合,postman通過collection來支持構(gòu)建請求工作流,自動化測試,請求的導(dǎo)入導(dǎo)出,持續(xù)集成等功能。
Collection 支持以下功能:
Sharing collections:可以將Collection中的請求導(dǎo)出分享給其他人;
Data formats:Postman可以導(dǎo)出環(huán)境變量,甚至可以將請求和環(huán)境變量等一起打包為一個Json,方便遷移所有的請求數(shù)據(jù)。
Collection的一大用處就是一次執(zhí)行其中所有的請求,這就是所謂的collection run。
1. 文件上傳
圖形界面端,Collection 中的請求不支持POST文件上傳,不過在導(dǎo)出Collection后,可以在json文件中配置文件路徑,然后使用 newman 進行文件上傳。詳細(xì)可以參考Postman官方博客:
Using Newman to run collections with file-post requests
不過文件上傳時必須指定文件路徑,不能用變量代替,也不能通過Data Files來設(shè)置不同的文件,不是很方便。所以我給官方提了Issue,目前該功能已經(jīng)納入 Feature,有望在后續(xù)版本中實現(xiàn)該功能。
這里就不得不贊一下Postman的社區(qū)支持了,基本上有任何問題,只要在官方Issue上提出,基本很快就會有Postman的工作人員提供支持。