Postman是一款強(qiáng)大的API接口測試工具恢筝。
有許多不容易發(fā)現(xiàn)的好用的功能,下面簡單介紹其中一部分功能澜沟。詳細(xì)內(nèi)容可以參考文檔,官方還有視頻教程峡谊,非常方便入手茫虽。后續(xù)本博客會持續(xù)提供一些Postman使用的細(xì)節(jié)技巧铝条,方便大家用Postman進(jìn)行接口調(diào)試。
Navigating Postman
作為一個跨平臺的API測試工具席噩,Postman有Win/Mac/Linux客戶端,還有瀏覽器擴(kuò)展程序贤壁。不過官方建議使用客戶端悼枢,主要有以下優(yōu)點(diǎn):
自帶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的請求進(jìn)行調(diào)試祈秕,特別是如果有pre-request或者test script時,使用控制臺可以方便debug雏胃。
原生postman可以通過CMD/CTRL + ALT + C打開控制臺请毛。
Generate code snippets:將當(dāng)前請求導(dǎo)出為各種版本的請求代碼,比如python瞭亮,js获印,curl等,方便用命令行測試街州;
Proxy:如果本機(jī)不能直接訪問服務(wù)端兼丰,可以在Settings-Proxy-Using custom/system proxy設(shè)置代理;
Capturing HTTP requests:有時候用手機(jī)訪問服務(wù)端時唆缴,我們可能需要借助fiddler來查看HTTP請求鳍征。postman也可以做相同的工作,只需要將postman作為代理轉(zhuǎn)發(fā)HTTP請求即可面徽。
Certificates: 如果服務(wù)端要驗(yàn)證客戶端證書艳丛,可以在Settings-Certificates-Add Certificate配置證書匣掸;
Environments and globals
我們在構(gòu)造API請求時,經(jīng)常會在多個地方使用相同的值氮双,比如相同的請求域名碰酝,一些固定的參數(shù)值。這時候如果使用變量來保存相應(yīng)的值戴差,然后在需要使用該值的地方用變量來代替會帶來不少好處送爸,比如要改變這些值,只用在變量的定義地方作出改動即可暖释。
man是一款強(qiáng)大的API接口測試工具袭厂,有許多不容易發(fā)現(xiàn)的好用的功能,下面簡單介紹其中一部分功能球匕。詳細(xì)內(nèi)容可以參考文檔纹磺,官方還有視頻教程,非常方便入手亮曹。后續(xù)本博客會持續(xù)提供一些Postman使用的細(xì)節(jié)技巧橄杨,方便大家用Postman進(jìn)行接口調(diào)試。
作為一個跨平臺的API測試工具照卦,Postman有Win/Mac/Linux客戶端讥珍,還有瀏覽器擴(kuò)展程序。不過官方建議使用客戶端窄瘟,主要有以下優(yōu)點(diǎn):
自帶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的請求進(jìn)行調(diào)試晒哄,特別是如果有pre-request或者test script時睁宰,使用控制臺可以方便debug肪获。原生postman可以通過CMD/CTRL + ALT + C打開控制臺。
Generate code snippets:將當(dāng)前請求導(dǎo)出為各種版本的請求代碼柒傻,比如python孝赫,js,curl等红符,方便用命令行測試青柄;
Proxy:如果本機(jī)不能直接訪問服務(wù)端,可以在Settings-Proxy-Using custom/system proxy設(shè)置代理违孝;
Capturing HTTP requests:有時候用手機(jī)訪問服務(wù)端時,我們可能需要借助fiddler來查看HTTP請求泳赋。postman也可以做相同的工作雌桑,只需要將postman作為代理轉(zhuǎn)發(fā)HTTP請求即可。
Certificates: 如果服務(wù)端要驗(yàn)證客戶端證書祖今,可以在Settings-Certificates-Add Certificate配置證書校坑;
Environments and globals
我們在構(gòu)造API請求時,經(jīng)常會在多個地方使用相同的值千诬,比如相同的請求域名耍目,一些固定的參數(shù)值。這時候如果使用變量來保存相應(yīng)的值徐绑,然后在需要使用該值的地方用變量來代替會帶來不少好處邪驮,比如要改變這些值,只用在變量的定義地方作出改動即可傲茄。
Postman定義了4類變量毅访,極大地方便了構(gòu)造請求以及對結(jié)果進(jìn)行測試:
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ù)憔晒,方便快速進(jìn)行大量不同請求數(shù)據(jù)的測試藻肄;
可以在不同請求中傳遞值,比如在一個請求中產(chǎn)生流水號拒担,將其設(shè)置為某個變量的值嘹屯,下一個請求即可使用該變量值。
ScriptsPostman 內(nèi)置了Node.js的運(yùn)行時環(huán)境从撼,可以執(zhí)行JS腳本州弟。這樣就帶來了很多激動人心的好處,比如構(gòu)建動態(tài)請求參數(shù)低零,編寫強(qiáng)大的測試用例等婆翔。Postman中的Scripts分為2類:pre-request script: 在發(fā)送請求之前執(zhí)行的腳本,一般用來構(gòu)建請求參數(shù)掏婶;
test script: 在獲取相應(yīng)之后執(zhí)行的腳本啃奴,一般用來做測試。不過需要注意雄妥,測試腳本運(yùn)行在Sandbox環(huán)境最蕾,內(nèi)置了許多JS庫支持,方便進(jìn)行測試老厌。
Postman的Sandbox環(huán)境十分強(qiáng)大瘟则,比如:
通過提供postman.setNextRequest("request_name")實(shí)現(xiàn),可以很方便地在 Collection 中控制請求的執(zhí)行路徑枝秤;
提供了一系列內(nèi)置接口醋拧,方便對環(huán)境變量,請求或者相應(yīng)內(nèi)容進(jìn)行訪問淀弹;
提供了 CryptoJS 庫趁仙,可以方便地進(jìn)行加解密操作;
提供了 tv4 庫垦页,可以對 Json Scheme進(jìn)行測試雀费;JSON Schema 定義了如何基于 JSON 格式描述 JSON 數(shù)據(jù)結(jié)構(gòu)的規(guī)范,進(jìn)而提供數(shù)據(jù)校驗(yàn)痊焊、文檔生成和接口數(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 進(jìn)行文件上傳他炊。詳細(xì)可以參考Postman官方博客:
Using Newman to run collections with file-post requests
不過文件上傳時必須指定文件路徑,不能用變量代替已艰,也不能通過Data Files來設(shè)置不同的文件痊末,不是很方便。所以我給官方提了Issue哩掺,目前該功能已經(jīng)納入 Feature凿叠,有望在后續(xù)版本中實(shí)現(xiàn)該功能。
這里就不得不贊一下Postman的社區(qū)支持了疮丛,基本上有任何問題幔嫂,只要在官方Issue上提出辆它,基本很快就會有Postman的工作人員提供支持誊薄。