Postman教程大全

推薦一款接口測試工具!POSTMAN! 簡單來講,四個詞,簡單實用大方美觀! css

Postman是一款功能強大的網頁調試與發送網頁HTTP請求的Chrome插件html

Postman背景介紹
前端

用戶在開發或者調試網絡程序或者是網頁B/S模式的程序的時候是須要一些方法來跟蹤網頁請求的,用戶可使用一些網絡的監視工具好比著名的Firebug等網頁調試工具。今天給你們介紹的這款網頁調試工具不只能夠調試簡單的css、html、腳本等簡單的網頁基本信息,它還能夠發送幾乎全部類型的HTTP請求!Postman在發送網絡HTTP請求方面能夠說是Chrome插件類產品中的表明產品之一。chrome

Postman的操做環境json

postman適用於不一樣的操做系統,Postman Mac、Windows X3二、Windows X6四、Linux系統,還支持postman 瀏覽器擴展程序、postman chrome應用程序等。windows

Postman重要提示:
api

因爲2018年初chrome中止對chrome應用程序的支持,你的postman插件可能沒法正常使用了。目前chrome應用商店能使用的就是chrome擴展程序和主題背景。數組

在這裏建議你們直接下載它的應用程序進行使用瀏覽器

貼上官網下載地址:Postman | Download Postman App安全

記得選擇下載的版本

 

 
這裏我選擇的是windows64位系統

下載完成後雙擊安裝吧,安裝過程極其簡單,無需任何操做

 

 
 

 

 
 

 

 
ok!

成功進入postman頁面後,接下來咱們正式進行postman的系統教程吧


設置postman主題

右上角的設置裏能夠設置postman的主題

 

 
 

這裏,出於我的習慣,我把它設置成了黑色

 
 

postman基礎功能介紹

首先,看一下它的基礎功能:

 

 
 

collection在postman裏面至關於一個文件夾,能夠把同一個項目的請求放在一個Collection裏方便管理和分享,Collection裏面也能夠再建文件夾。這裏咱們作一個普通接口的簡單的示例:

 

 
新建一個文件夾

 

 
建立一個文件集

 

 
新建一個請求

 

 

 
給這接口明明爲查詢上海天氣並保存

 

 
點擊該請求,如今是空白的

 

 
輸入一個get請求,params裏會自動顯示參數

該請求是聚合數據提供的一個查詢天氣的接口,大概還有幾百次的次數能夠用:

http://v.juhe.cn/weather/index?format=2&cityname=南京&key=64aa04d276d1ed4fd5a147d97e16b87e

點擊send,查詢成功

 
成功查詢到上海天氣

這樣就完成了一次簡單的天氣查詢接口的請求

 


請求區域介紹

 
 

    Authorization:身份驗證,主要用來填寫用戶名密碼,以及一些驗簽字段,postman有一個helpers能夠幫助咱們簡化一些重複和複雜的任務。當前的一套helpers能夠幫助你解決一些authentication protocols的問題。;

2    Headers:請求的頭部信息

3    Body:post請求時必需要帶的參數,裏面放一些key-value鍵值對

4    Pre-requerst Script:可讓你在 請求以前自定義請求數據,這個運行在請求以前,語法使用JavaScript語句。

5    tests:tests標籤功能比較強大,一般用來寫測試,它是運行在請求以後。支持JavaScript語法。postman每次執行request的時候,會執行tests。測試結果會在tests的tab上面顯示一個經過的數量以及對錯狀況。這個後面會進行詳解,它也能夠用來設計用例,好比要測試返回結果是否含有某一字符串

6    form-data:,它將表單數據處理爲一條消息,以標籤爲單元,用分隔符分開。既能夠單獨上傳鍵值對,也能夠直接上傳文件(當上傳字段是文件時,會有Content-Type來講明文件類型,但該文件不會做爲歷史保存,只能在每次須要發送請求的時候,從新添加文件。);post請求裏較經常使用的一種

 

 
上傳文件

7    x-www-form-urlencoded:對應信息頭-application/x-www-from-urlencoded,會將表單內的數據轉換爲鍵值對;

8    raw:能夠上傳任意類型的文本,好比text、json、xml等,全部填寫的text都會隨着請求發送;

9    binary:對應信息頭-Content-Type:application/octet-stream,只能上傳二進制文件,且沒有鍵值對,一次只能上傳一個文件, 也不能保存歷史,每次選擇文件,提交;


導出和導入接口集:

postman支持很是方便的導入和導出接口集,繼續操做以下:

 

導出

 

 
 

 

 
 

 

 
數據通常以postman_collection.json結尾

 

導入:

 

 
 

 

 
 

 

 
爲了區分,我把他們名稱改了

ok,這樣就是簡單的導入導出collection集合

 


關於設置環境變量:

 

1. Global---全局

2. Enviroment --- 環境變量

3. Local --- 局部

4. Data ---- 數據

優先級從高到底 Data ---- > Local ---- > Enviroment ---- > Global

 

postman支持很方便的設置環境變量以及全局變量,並能夠一鍵切換不一樣環境

 

 
 

1:能夠一鍵切換環境,選擇No Environment則不使用環境變量,僅適用全局變量

2:能夠查看當前環境中的變量和全局變量(Globals)的值

 

 
 

3.進入設置頁面

 

 
 

如新建一套環境dome

 

 
 

選擇咱們剛纔建立的環境,點擊眼睛能夠看到咱們設置的變量值

 
 

建立環境變量可以很方便的調取咱們所需的數據

 


將返回值的某個數據設置爲環境變量

在某些時候,咱們須要獲取到一個變量,並保存下來,由於在後面咱們會使用到。好比token,sign等信息

這時候就須要用到tests區域了,使用其強大的js語法

下面是一個簡單的將返回值的某個數據設置爲環境變量或者全局變量的介紹:

 

定義一個xxx,獲取body中返回的全部參數,並轉化爲JSON格式 var xxx = JSON.parse(responseBody);

//把json字符串轉化爲對象。parse()會進行json格式的檢查是一個安全的函數, 如:檢查json中某個數組元素的個數(這裏檢測programs的長度)

var data = JSON.parse(responseBody);tests["program's lenght"] = data.programs.length === 5;

 

將返回中的值設置爲一個環境變量 pm.environment.set("key",xxx.data.value);或者postman.setEnvironmentVariable("key", "value");

將返回中的值設置爲一個全局變量,        pm.globals.set("key",xxx.data.value);或者postman.setGlobalVariable("key", "value");

//注意:Global後面不能加S,value值必定要指定到某個具體節點

 

實際操做一下:

一個微信登陸的接口token值獲取

 

 
 

這是一個微信登陸的接口,屬於post方法,裏面的必須參數是unionid,這裏我已經把unionid填在body裏了,點擊send下面能夠獲得一個token

該登陸token每次請求的值都是不同的,屬於一個動態值。然後面咱們的全部接口請求都須要這個token,如今就可使用tests將它放置在環境變量裏

 

 
 

var acquiretoken = JSON.parse(responseBody);

//定義一個acquiretoken方法(獲取token),把responseBody轉爲json字符串

pm.environment.set("token",acquiretoken.data.token);

//將token變量放置到當前環境變量裏去

 

再次執行send後,點擊右上角小眼睛

 

 
 

發現變量就儲存在了dome的環境變量裏,每次點擊send進行請求,發現環境變量裏token都會隨着結果變化而變化。

同理,全局變量統一能夠這樣設置

在設置過變量後,調用變量的時候,在postman裏也比較方便,直接使用{{變量名}}就能夠了,

加入咱們在body裏須要一個token值,那麼咱們能夠直接在引用在環境變量裏儲存的token,例如:

 

 
引用變量的時候會有必定的提示

 

 
變顏色表明引入變量成功

上面的效果和下面這種把一點點輸入的的效果是同樣的!

 
 

 


其餘的經常使用tests方法:

在postman裏,內置了一些經常使用的方法:

 

 
 

能夠很方便的調用

下面我也整理了一些經常使用的tests方法,分享給你們

 

 

測試response Headers中的某個元素是否存在 tests["元素Content-Type是否存在"] = postman.getResponseHeader("Content-Type");

//getResponseHeader()方法會返回header的值;

 

定義一個xxx,獲取headers值 var.xxx = postman.getResponseHeader("key");

將Headers中的值設置爲一個環境變量 postman.setEnvironmentVariable("key",xxx);或者pm.environment.set("key",xxx);

 

 

檢查response的code值是否爲200 tests["Status code is 200"] = responseCode.code === 200;

// tests["Status code is 200"]中的tests是一個內置對象,

tests["Status code is 200"]是指爲這個斷言起個名稱叫」Status code is 200」,這個名稱能夠自行修改。

responseCode.code === 200中的responseCode是內置對象,responseCode對象中有個屬性是code,是指HTTP狀態碼的code,判斷code是否爲200.

綜合起來,這句代碼的意思是:名稱爲」Status code is 200」的斷言中,判斷responseCode對象的code屬性值(HTTP狀態碼)是否爲200。

 

檢查response的body中是否包含字符串 tests["Body matches string"] = responseBody.has("type");

// tests["Body matches string"]中的tests是一個內置對象,

tests["Body matches string"]是指爲這個斷言起個名稱叫」Body matches string」,這個名稱能夠自行修改。

這句代碼的意思是:名稱爲」Body matches string」的斷言中判斷響應正文中是否包含:type這個字段。type不管是key或者value,只要匹配就能夠。多個類型可用「,」分割。

 

檢查Response Body是否等於字符串 tests["測試點"] = responseBody === "Response Body返回的內容";

//這個能夠用在接口返回內容爲純字符串時,直接檢查整個返回結果的正確性

 

檢查Response time 是否小於200ms tests["Response time 小於200毫秒"] = responseTime < 200;

 

檢查Response time 是否大於200ms tests["Response time 大於200毫秒"] = responseTime > 200;

 

postman.setNextRequest('Request 4')

// postman.setNextRequest()是一個帶有一個參數的函數,它是接下來要運行的請求的名稱或ID。每每用來跳轉至某個接口,只在運行該集合時有用,單獨運行無效

 

 var jsonObject = xml2Json(responseBody);

//轉換XML body爲JSON對象

 

設置一個隨機數變量 pm.globals.set("type",parseInt(4*Math.random())+1);

//針對不一樣類型的課程類型,設置一個1到4的隨機整數,字段名是type,parselnt 是強制轉換爲整數

 

校驗接口返回是否有數據 tests["獲取第一個結果"] = xxx.content.jieguo[0];

//個人程序設置的是若是當前沒有數據,則只返回content[],因此這句斷言能夠校驗,若是content裏還有數據,則視爲返回不爲空

 


使用postman進行接口自動化測試

沒錯,使用postman也能夠進行接口自動化的,是否是很神奇

首先,既然是自動化測試,那麼咱們確定須要工具 (Postman) 或者代碼能幫咱們直接判斷結果是否符合預期。那麼在接口測試上,大致就兩個思路:

判斷請求返回的 code 是否符合預期

判斷請求返回的內容中是否包含預期的內容(關鍵字)

接下來咱們看看如何利用 Postman 來解決上述的問題

--------------------

 

這是三個模擬天氣的接口集合,點擊擴展按鈕,找到RUN,進入

 
 

 

 

 
 

這裏咱們先簡單運行一次:

 

 
 

發現,運行成功。裏面我每一個接口都寫了兩個tests進行校驗字段,因此上面一共有6條tests測試點被測試到,而且是成功的

每一個接口裏的tests數據以下:

 
 

固然,若是想要每次運行不同的數據,咱們須要其餘的方法,好比,使用pre-requestScprit功能,導入或者生成隨機數據進行測試,這個後續我再進行講解

 


 

 
 第二種:
 
我如今用apipost( https://www.apipost.cn/)了,支持團隊協做,並可直接生成文檔,感受比postman容易上手些。。
ApiPost是一個支持團隊協做,並可直接生成文檔的API調試、管理工具
支持模擬POST、GET、PUT等常見請求,是後臺接口開發者或前端、接口測試人員不可多得的工具 
 

 

 

 
 
第三種:

極客專屬的接口協做管理工具

 

相關文章
相關標籤/搜索