零、PostMan介紹
一、使用介紹
1、建立集合
集合可以理解成請求的總和或合集,在Postman中,集合表示將請求進行分組、分模組管理;對含義相近、對功能相近的請求儲存到一個集合中,方便後期的維護、管理。
2、建立請求
建立集合後,即可在集合下建立請求,點選圖中的“+”即可。
3、傳送第一個GET請求
使用下面測試連結,請求方式選擇GET,點選send,即可從伺服器獲取響應資料。
postman-echo.com/get?param1=51¶m2=66
請求方式有如下八種:
請求方式 |
解釋 |
GET |
用於獲取資源,當採用 GET 方式請求指定資源時, 被訪問的資源經伺服器解析後立即返回響應內容。通常以 GET 方式請求特定資源時, 請求中不應該包含請求體,所有需要向被請求資源傳遞的資料都應該透過 URL 向伺服器傳遞。 |
POST |
用於提交資料, 當採用 POST 方式向指定位置提交資料時,資料被包含在請求體中,伺服器接收到這些資料後可能會建立新的資源、也可能會更新已有的資源。 |
DELETE |
用於刪除特定位置的資源。 |
PUT |
用於向指定位置提交資料, 當採用 PUT 方式向指定位置提交資料時, 資料被包含在請求體中, 伺服器接收到這些資料後直接在當前位置(即提交資料時指定的位置) 建立新的資源。 PUT 方式和 POST 方式極為相似,都可以向伺服器提交資料,
|
... |
... |
4、傳送第一個POST請求
場景一:在連結種新增引數,使用場景比較少,但也會有。
https://postman-echo.com/post?param=51zxw
場景二:提交表單資料,傳送一個Request,其中body為application/x-www-form-urlencoded型別,引數分別為param1=gqx和param2=888 請 求 URL 如下:
https://postman-echo.com/post
-
- multipart/form-data:可以上傳檔案或者鍵值對,最後都會轉化為一條訊息
- x-www-form-urlencoded:只能上傳鍵值對,而且鍵值對都是透過&間隔分開的
5、PUT請求
HTTP PUT 請求主要是從客戶端向伺服器傳送的資料取代指定的文件的內容。
傳送 PUT 請求,並傳遞字元引數“hello world”
6、delete請求
請求連結
https://postman-echo.com/delete
二、環境變數&資料變數以及斷言
1、環境變數
環境變數指在不同環境,同一個變數值隨著環境不同而變化,比如我們上面舉例場景就可以使用環境變數,當在測 試環境時,host 值為: dev.postman.com ,當切換到生產環境時,host 值變為:postman-echo.com 。
增加了兩個環境變數,分別對應線上和線下,執行的時候,選擇合適的環境變數即可。
2、本地變數
本地變數主要是針對單個 URL 請求設定的變數,作用域只是侷限在請求範圍內。如請求 URL 如下,設定兩個本地 變數(user,passwd)作為引數。請求方式為 POST
https://postman-echo.com/post
變數設定好之後需要賦值,在 Pre-request-Script 裡面編寫如下程式碼:
3、全域性變數
全域性變數是指在所有的環境裡面,變數值都是一樣的,全域性變數的作用域是所有請求。
【1】pm.globals.set("variable_key", "variable_value"):設定全域性變數;
【2】pm.globals.get("variable_key"):獲取全域性變數;
4、關於Pre-request-Script
試試在進行介面測試時,有些工作需要在請求發起前進行完成,這就好比你要去看一場演唱會,前提條件是你必須在合適的時間且拿著入場票才可以如願,那麼買票等操作就是你看演唱會的充分條件。(預置指令碼)
【1】pm.environment.get("variable_key"):獲取環境變數;
【2】pm.globals.get("variable_key"):獲取全域性變數;
【3】pm.variables.get("variable_key"):獲取本地變數;
【4】pm.environment.set("variable_key", "variable_value"):設定環境變數;
【5】pm.globals.set("variable_key", "variable_value"):設定全域性變數;
【6】pm.environment.unset("variable_key"):清除環境變數;
【7】pm.globals.unset("variable_key"):清除全域性變數;
三、自寫預置指令碼示例
除了使用 postman 自身封裝的指令碼外,我們還可以使用自己使用 js 編寫的指令碼作為預置指令碼。如我們想新增一個 nowTime引數,這個引數必須是當前系統時間;
var now = new Date(); //獲取當前日期 pm.environment.set("now", now);//將當前日期設定為時間引數
四、斷言
使用postman完成請求後,驗證返回結果,會用到test斷言。\
1、判斷響應體中是否包含指定內容
判斷請求返回的狀態為200,200就是正常
pm.test("Status code is 200", function () { pm.response.to.have.status(200); });
以此內推,可以判斷響應體的其他結構中是否包含指定內容:
以此類推
//body中是否包含"111" pm.test("Status code name has string", function () { pm.response.to.have.body("111"); //boy中是否包含111 }); //斷言響應頭包含指定的響應頭(“head”)中包含"Content-Type" pm.test("Content-Type is present", function () { pm.response.to.have.header("Content-Type"); }); //其他方式實現——斷言響應結果包含指定的字串 pm.test("Body matches string", function () { pm.expect(pm.response.text()).to.include("哈哈哈"); });
3、斷言響應結果等於指定的字串
pm.test("Body is correct", function () { console.log(pm.response.text()) pm.response.to.have.body("111"); //一般用於響應結果固定的斷言方式 });
4、斷言介面響應時間小於200ms
pm.test("Response time is less than 200ms", function () { pm.expect(pm.response.responseTime).to.be.below(200); //響應時間根據需要進行自定義 });
5、斷言響應碼在指定範圍內
pm.test("Successful POST request", function () { pm.expect(pm.response.code).to.be.oneOf([100, 202]); //根據介面自身情況定義範圍,比較常用 });
五、基礎知識補充
1、Request Header
HTTP請求報文格式
2、Response Header
HTTP響應報文格式
3、Cookie設定
cookie 是儲存在瀏覽器中的小片段資訊,每次請求後都將其傳送回伺服器,以便在請求之間儲存有用的資訊。比 如很多網站登入介面都有保留賬號密碼,以便下次登入。由於 HTTP 是一種無狀態的協議,伺服器單從網路連線上無從知道客戶身份。怎麼辦呢?就給客戶端們頒發一個通 行證吧,每人一個,無論誰訪問都必須攜帶自己通行證。這樣伺服器就能從通行證上確認客戶身份了。這就是 Cookie 的工作原理。
Cookie 是由服務端生成,儲存在響應頭中,返回給客戶端,客戶端會將 cookie 儲存下來,在客戶端傳送請求時, user-agent 會自動獲取本地儲存的 cookie,將 cookie 資訊儲存在請求頭中,併傳送給服務端。postman 也可以 設定、獲取、刪除 Cookie。
新增Cookie
檢視響應資訊種的Cookie
也可以這樣檢視
4、授權設定
很多時候,出於安全考慮我們的介面並不希望對外公開。這個時候就需要使用授權(Authorization)機制 授權過程 驗證您是否具有訪問伺服器所需資料的許可權。 當您傳送請求時,您通常必須包含引數,以確保請求具有訪問和返 回所需資料的許可權。
Postman 支援的授權協議型別如下:
- No Auth
- Basic auth
- Digest Auth
- OAuth 1.0
- Hawk Authentication
- 等等
(1)Basic auth
基本身份驗證是一種比較簡單的授權型別,需要經過驗證的使用者名稱和密碼才能訪問資料資源。這就需要我們輸入用 戶名和對應的密碼。 請求 URL 如下,授權賬號為:
- 使用者名稱: postman
- 密碼: password
- 授權協議為:Basic auth
- https://postman-echo.com/basic-auth
(2)Digest Auth
Digest auth 是一個簡單的認證機制,最初是為 HTTP 協議開發的,因此也常叫做 HTTP 摘要。其身份驗證機制非 常簡單,它採用雜湊加密方法,以避免用明文傳輸使用者的口令。摘要認證就是要核實參與通訊的兩方都知道雙方共 享的一個口令。 當 server 想要查證使用者的身份,它產生一個摘要盤問(digest challenge),併傳送給使用者。典型的摘要盤問例如以下:
請求 URL 如下 :
https://postman-echo.com/digest-auth
摘牌配置資訊如下:使用者名稱密碼和上面 basic auth 一樣
Digest username="postman" 密碼: password , realm="Users", nonce="ni1LiL0O37PRRhofWdCLmwFsnEtH1lew", uri="/digest-auth",
response="254679099562cf07df9b6f5d8d15db44", opaque=""
(3)Hawk Auth
Hawk Auth 是一個 HTTP 認證方案,使用 MAC(Message Authentication Code,訊息認證碼演算法)演算法,它提供 了對請求進行部分加密驗證的認證 HTTP 請求的方法。hawk 方案要求提供一個共享對稱密匙在伺服器與客戶端之 間,通常這個共享的憑證在初始 TLS(安全傳輸層協議)保護階段建立的,或者是從客戶端和伺服器都可用的其他 一些共享機密資訊中獲得的。請求 URL 如下:https://postman-echo.com/auth/hawk
金鑰資訊如下:
•Hawk Auth ID: dh37fgj492je
•Hawk Auth Key: werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn
•Algorithm: sha256
(4)OAuth 1.0
允許使用者讓第三方應用訪問該使用者在某一網站上儲存的私密的資源(如照片, 影片,聯絡人列表),而無需將使用者名稱和密碼提供給第三方應用。
請求 URL 如下:請求方式為 GET,Add authorization data to 設定為:Request Headers
https://postman-echo.com/oauth1
引數配置為:
- Consumer Key: RKCGzna7bv9YD57c
- Consumer Secret: D+EdQ-gs$-%@2Nu7