Postman是一款強大的API接口測試工具,有許多不容易發現的好用的功能,下面簡單介紹其中一部分功能。詳細內容可以參考文檔,官方還有視頻教程,非常方便入手。后續本博客會持續提供一些Postman使用的細節技巧,方便大家用Postman進行接口調試。

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

collection runner
在執行collection run時,有很多配置選項,主要如下:
Using environments in collection runs: 可以指定一個 Environment,這樣collection中的請求可以使用其中的變量;
Working with data files: 可以導入一個Data File,里面存放測試中用到的Data變量。可以存放很多不同的Data變量,這樣迭代跑多次Collection時,每次使用不同的數據;
Running multiple iterations: 可以配置迭代的運行Collection中的請求,對接口的穩定性進行測試。此外配合Data files,也可以對接口的正確性進行測試;
Building workflows:默認情況下會順序執行Collection中的請求,不過可以通過setNextRequest()來更改請求的執行流程。
Debugging a collection run: Collection中的請求執行后,會有可視化的執行結果展示,可以方便進行調試,此外,也可以通過控制台來進行調試。
Sharing a collection run: 整個Collection Run也是可以導出,可以在其他平台進行運行;
Command line integration with Newman: 導出Collection Run后,可以在命令行使用 newman 運行。
Integration with Travis CI: 可以將 newman 和 Travis CI集成,配置好持續性集成,指定自動運行測試用例的時機。
其他功能
1. 文件上傳
圖形界面端,Collection 中的請求不支持POST文件上傳,不過在導出Collection后,可以在json文件中配置文件路徑,然后使用 newman 進行文件上傳。詳細可以參考Postman官方博客:Using Newman to run collections with file-post requests
不過文件上傳時必須指定文件路徑,不能用變量代替,也不能通過Data Files來設置不同的文件,不是很方便。所以我給官方提了Issue,目前該功能已經納入 Feature,有望在后續版本中實現該功能。這里就不得不贊一下Postman的社區支持了,基本上有任何問題,只要在官方Issue上提出,基本很快就會有Postman的工作人員提供支持。