Postman的簡單使用

1、Postman的簡單介紹

熟悉HTTP協議,能容易的配置一個簡單的http請求,這裏就不介紹了。下面是Postman的主要功能:javascript

  • 一、支持定義http請求分組
  • 二、支持配置不一樣環境變量
  • 三、支持路徑參數、請求頭參數、請求實體參數的錄入
  • 四、支持編寫腳本預處理請求(Pre-request Script)
  • 五、支持編寫腳本斷言響應結果及其餘測試(Tests)

Postman使用-01

2、Postman的變量

一、做用

Postman用於注入請求地址、請求參數、請求實體、請求頭中佔位符{{}}中的值。java

二、分類

postman的變量配置,變量類型分爲一下3種。每個變量包含key值,初始化值,當前值三個可編輯項。json

變量類型 做用範圍 佔位符取值優先級 腳本編輯 導入導出
普通變量 當前單個請求 最高 支持 不支持
環境變量 啓用下的全部請求 支持 支持
全局變量 全部請求 最低 支持 支持

三、設置入口

3.一、可視化設置

變量編輯入口-01
變量編輯入口-02

3.二、編碼設置

變量操做語法後端

3、Postman的腳本執行

一、腳本設置入口

1.一、分類

以請求爲導線,分爲Pre-request ScriptTests
以請求組合分類爲導線,分爲collection級別、folder級別和request級別。
以上兩種分類的組合共有6個腳本設置入口。api

1.二、設置入口

1.2.一、collection級別

腳本編輯入口-01

腳本編輯入口-02

1.2.一、folder級別

腳本編輯入口-03

腳本編輯入口-04

1.2.一、request級別

腳本編輯入口-05

1.三、執行時間

  • 一、Pre-request Script在請求前執行
  • 二、Tests在響應後執行
  • 三、collection級別在folder級別前執行,folder級別在request級別前執行
時間線(上先下後順序) l類別
請求接口前 Pre-request Script(collection級別)
請求接口前 Pre-request Script(folder級別)
請求接口前 Pre-request Script(request級別)
請求接口
請求返回後 Tests(collection級別)
請求返回後 Tests(folder級別)
請求返回後 Tests(request級別)

4、Postman腳本經常使用語法

一、變量操做

<div id="變量操做語法"></div>安全

變量類型 set值語法 get值語法 清除語法
普通變量 pm.variables.set("key", "value") pm.variables.get("key") pm.variables.unset("variable_key")
環境變量 pm.environment.set("key", "value") pm.environment.get("key") pm.environment.unset("variable_key")
全局變量 pm.globals.set("key", "value") pm.globals.get("key") pm.globals.unset("variable_key")

二、異步發送非當前請求

異步發送Get請求https://postman-echo.com/getless

pm.sendRequest("https://postman-echo.com/get", function (err, response) {
    console.log(response.json());
});

三、響應斷言

3.一、請求結果斷言

根據HTTP狀態碼斷言前後端分離

pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});
pm.test("Successful POST request", function () {
    pm.expect(pm.response.code).to.be.oneOf([201,202]);
});

根據響應狀態描述文字斷言異步

pm.test("Status code name has string", function () {
    pm.response.to.have.status("Created");
});

3.二、文本響應實體斷言

斷言文本響應結果包含某個字符串函數

pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});

斷言文本響應實體匹配字符串

pm.test("Body is correct", function () {
    pm.response.to.have.body("response_body_string");
});

3.三、JSON響應實體斷言

pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.value).to.eql(100);
});

3.四、響應頭斷言

pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type");
});

3.五、響應耗時斷言

pm.test("Response time is less than 200ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(200);
});

四、響應實體由XML轉JSON

var jsonObject = xml2Json(responseBody);

五、自定義JSON校驗規則

var schema = {
  "items": {
    "type": "boolean"
  }
};

var data1 = [true, false];
var data2 = [true, 123];

pm.test('Schema is valid', function() {
  pm.expect(tv4.validate(data1, schema)).to.be.true;
  pm.expect(tv4.validate(data2, schema)).to.be.true;
});

六、參考文檔

Postman Sandbox API reference

5、使用舉例

一、問題場景

公司軟件項目做先後端分離,有獨立的後臺接口。後臺接口開發過程避免不了接口測試。
因爲安全性設計,請求接口須要進行參數簽名。公司內部已提供簡單的客戶端工具,封裝了簽名過程,調用接口主要寫接口地址、接口方法名、業務參數三中數據。但還存如下問題:
<span style="color: red">客戶端工具不能記錄歷史請求,複用歷史請求</span>

二、面臨問題

若是切換到Postman做爲接口調用工具,須要具有如下條件:

  • a、登陸請求後,須要記住Token
  • b、全部業務接口,須要自動帶上Token
  • c、對請求參數加工,附加上系統參數
  • d、對請求參數進行簽名(這裏使用MD5)

若是Postman容許,具有如下條件更好:

  • e、支持一處編寫腳本進行參數處理,每處複用

三、解決方法

問題序號 解決方法
a 編寫Tests腳本,存儲Token到環境變量
b 使用Postman請求參數佔位符功能,請求前自動從環境變量獲取並注入
c 同問題b的解決方法
d 編寫Pre-request Script腳本,進行參數簽名。MD5使用到內置函數 CryptoJS.MD5()
e 基於JavaScript的封裝,提供通用JS腳本做爲一個collection級別的變量,在不一樣的請求的Pre-request Script腳本中使用eval函數進行引入

四、關鍵圖示

解決圖示-01
解決圖示-02
解決圖示-03
解決圖示-04
解決圖示-05
解決圖示-06

相關文章
相關標籤/搜索