熟悉HTTP協議,能容易的配置一個簡單的http請求,這裏就不介紹了。下面是Postman的主要功能:javascript
Postman用於注入請求地址、請求參數、請求實體、請求頭中佔位符{{}}
中的值。java
postman的變量配置,變量類型分爲一下3種。每個變量包含key值,初始化值,當前值三個可編輯項。json
變量類型 | 做用範圍 | 佔位符取值優先級 | 腳本編輯 | 導入導出 |
---|---|---|---|---|
普通變量 | 當前單個請求 | 最高 | 支持 | 不支持 |
環境變量 | 啓用下的全部請求 | 中 | 支持 | 支持 |
全局變量 | 全部請求 | 最低 | 支持 | 支持 |
見變量操做語法後端
以請求爲導線,分爲Pre-request Script
和Tests
。
以請求組合分類爲導線,分爲collection級別、folder級別和request級別。
以上兩種分類的組合共有6個腳本設置入口。api
Pre-request Script
在請求前執行Tests
在響應後執行時間線(上先下後順序) | l類別 |
---|---|
請求接口前 | Pre-request Script(collection級別) |
請求接口前 | Pre-request Script(folder級別) |
請求接口前 | Pre-request Script(request級別) |
請求接口 | |
請求返回後 | Tests(collection級別) |
請求返回後 | Tests(folder級別) |
請求返回後 | Tests(request級別) |
<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()); });
根據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"); });
斷言文本響應結果包含某個字符串函數
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"); });
pm.test("Your test name", function () { var jsonData = pm.response.json(); pm.expect(jsonData.value).to.eql(100); });
pm.test("Content-Type is present", function () { pm.response.to.have.header("Content-Type"); });
pm.test("Response time is less than 200ms", function () { pm.expect(pm.response.responseTime).to.be.below(200); });
var jsonObject = xml2Json(responseBody);
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; });
公司軟件項目做先後端分離,有獨立的後臺接口。後臺接口開發過程避免不了接口測試。
因爲安全性設計,請求接口須要進行參數簽名。公司內部已提供簡單的客戶端工具,封裝了簽名過程,調用接口主要寫接口地址、接口方法名、業務參數三中數據。但還存如下問題:
<span style="color: red">客戶端工具不能記錄歷史請求,複用歷史請求
</span>
若是切換到Postman做爲接口調用工具,須要具有如下條件:
若是Postman容許,具有如下條件更好:
問題序號 | 解決方法 |
---|---|
a | 編寫Tests腳本,存儲Token到環境變量 |
b | 使用Postman請求參數佔位符功能,請求前自動從環境變量獲取並注入 |
c | 同問題b的解決方法 |
d | 編寫Pre-request Script腳本,進行參數簽名。MD5使用到內置函數 CryptoJS.MD5() |
e | 基於JavaScript的封裝,提供通用JS腳本做爲一個collection級別的變量,在不一樣的請求的Pre-request Script腳本中使用eval函數進行引入 |