Postman是一款強大的API接口測試工具,有許多不容易發現的好用的功能,下面簡單介紹其中一部分功能。詳細內容能夠參考文檔,官方還有視頻教程,很是方便入手。後續本博客會持續提供一些Postman使用的細節技巧,方便你們用Postman進行接口調試。python
Navigating Postmangit
做爲一個跨平臺的API測試工具,Postman有Win/Mac/Linux客戶端,還有瀏覽器擴展程序。不過官方建議使用客戶端,主要有如下優勢:github
自帶cookie支持:請求可使用同一域名下的cookie;json
內置代理支持:能夠用來轉發請求,分析請求流量;api
自定義請求頭:沒必要受限於Chrome中對於請求頭的限制;瀏覽器
內置控制檯:在控制檯能夠查看請求的詳細信息cookie
簡單來講,postman 作的事情就是模擬瀏覽器發送請求,接受響應。使用Postman能夠模擬任何瀏覽器發出的請求,能夠自由地構造請求地址,請求方法,請求內容,Cookies等。Postman的響應內容包括完整的響應頭,響應時間,響應大小,cookie等內容。數據結構
此外,postman還提供以下方便功能:app
Debugging and logs:能夠在控制檯對postman的請求進行調試,特別是若是有pre-request或者test script時,使用控制檯能夠方便debug。原生postman能夠經過CMD/CTRL + ALT + C打開控制檯。curl
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的工做人員提供支持。