天天看點

postman簡單使用

Postman背景介紹

Postman的操作環境

postman适用于不同的作業系統,Postman Mac、Windows X32、Windows X64、Linux系統,還支援postman 浏覽器擴充程式、postman chrome應用程式等。

Postman重要提示:

由于2018年初chrome停止對chrome應用程式的支援,你的postman插件可能無法正常使用了。目前chrome應用商店能使用的就是chrome擴充程式和主題背景。

在這裡建議大家直接下載下傳它的應用程式進行使用

進入官網:https://www.getpostman.com/downloads/

記得選擇下載下傳的版本

postman簡單使用
postman簡單使用

下載下傳完成後輕按兩下應用程式進行安裝,安裝過程極其簡單,無需任何操作

 以下postman版本為:V8.5.1

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

postman基礎功能介紹

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

postman簡單使用

collection在postman裡面相當于一個檔案夾,可以把同一個項目的請求放在一個Collection裡友善管理和分享,Collection裡面也可以再建檔案夾。這裡我們做一個普通接口的簡單的示例:

postman簡單使用

建立一個檔案夾

postman簡單使用

建立一個檔案集

postman簡單使用

建立一個請求

postman簡單使用

給這接口命名為“擷取access_token”

postman簡單使用

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

postman簡單使用

點選send,查詢成功

postman簡單使用

成功傳回了了access_token

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

請求區域介紹

postman簡單使用

1     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簡單使用
postman簡單使用
postman簡單使用

資料一般以postman_collection.json結尾

導入:

postman簡單使用
postman簡單使用
postman簡單使用

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

關于設定環境變量:

1. Global---全局

2. Enviroment --- 環境變量

3. Local --- 局部

4. Data ---- 資料

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

postman支援很友善的設定環境變量以及全局變量,并可以一鍵切換不同環境

postman簡單使用

1:可以一鍵切換環境,選擇No Environment則不使用環境變量,僅适用全局變量

2:可以檢視目前環境中的變量和全局變量(Globals)的值

postman簡單使用

3.進入環境設定頁面

輸入最初的值,會自動填充現在的值

postman簡單使用
postman簡單使用
postman簡單使用

 環境變量的使用:切換到我們剛建立的環境下,可以把之前的"https://qyapi.weixin.qq.com”改成“{{base_url}}”,base_url為環境變量名

postman簡單使用

将傳回值的某個資料設定為環境變量

在某些時候,我們需要擷取到一個變量,并儲存下來,因為在後面我們會使用到。比如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值一定要指定到某個具體節點

實際操作一下:

擷取企微會話存檔的接口,需要access_token

這是一個擷取access_token的接口,點選send下面可以得到一個access_token

該access_token每次請求的值都是不一樣的,屬于一個動态值。而後面我們的所有接口請求都需要這個access_token,現在就可以使用tests将它放置在環境變量裡

postman簡單使用

//定義一個response方法(擷取access_token),把responseBody轉為json字元串

var response= JSON.parse(responseBody);

//将access_token變量放置到目前環境變量裡去

pm.environment.set("access_token",response.access_token);

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

postman簡單使用

發現變量就儲存在了企微api的環境變量裡,每次點選send進行請求,發現環境變量裡access_token都會随着結果變化而變化。

同理,全局變量統一可以這樣設定

在設定過變量後,調用變量的時候,在postman裡也比較友善,直接使用{{變量名}}就可以了,

使用access_token變量,引用變量的時候會有一定的提示

postman簡單使用

 變顔色代表引入變量成功

postman簡單使用

其他的常用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功能,導入或者生成随機資料進行測試,這個後續我再進行講解

下一篇: beautifulsoup