無論是接口調試還是接口測試,postman都算的上很優秀的工具,好多接口測試平台、接口測試工具框架的設計也都能看到postman的影子,我們真正了解了這款工具,才可以在這個基礎上進行自己的設計和改造。
-簡介
界面介紹
主要界面功能介紹
工作台頁面主要介紹
-postman基礎用法介紹
-postman高階應用
環境變量
全局變量(Globals)
Environment變量
collection用例集
用例集創建
用例集執行
用例集分享,導入導出
-生成API文檔
-JavaScript腳本
Postman Sandbox
常用的庫和使用程序
Pre-request JavaScript
Tests
-Mock Server
創建mock server
編輯mock response(創建example)
使用mock server
簡介
相似工具: 命令行curl fiddler
下載地址:官網下載https://www.getpostman.com/
如果我的文檔看不明白直接看官方文檔吧:https://learning.getpostman.com/docs/postman/launching_postman/installation_and_updates/
postman功能介紹:
- 請求調試
- 代理抓包
- 環境變量設置
- 導入與導出
- 生成在線API文檔
- 自動化測試
- mock server
界面介紹
主要界面功能介紹
l New: 新建,可以創建request(請求),collection(請求集),environment(環境變量)等。
l Inport:導入,可以直接導入postman請求集,curl等一些請求文件。
l Runner: 執行請求,可以選擇執行請求的collection,並且添加執行參數,例如執行時間,執行次數等等。
l Workspace: 工作台,可以選擇使用個人工作台或團隊工作台,可以創建team並且邀請成員加入一起編輯使用請求集。
l History: 歷史請求,所有調試的歷史請求數據
l Collection: 請求集,可以創建保存,將某些請求放到一起形成請求集
l Environment: 環境變量,管理設置的環境變量,可以設置全局環境變量,也可新建環境,添加環境變量
工作台頁面主要介紹
l 請求方法: 支持get,post,put,patch等請求方法
l URL: 可以直接輸入請求URL,也可以通過環境變量設置,自定義URL
l Params: 請求參數
l Authorization: 認證鑒權,支持多種授權鑒權
l Header: 請求頭
l Body: 請求體,包含form-data,json,文件上傳等
l Pre-request-Script: 請求腳本,可以在請求發起前執行的腳本
l Tests: 接口測試,請求完成后進行的測試腳本
l Cookies: 可以為請求添加cookies
l 下面就是response的一些信息,返回數據,返回頭,cookie,測試結果等
postman基礎用法介紹
以一個線上課程請求實例來介紹:
URL: http://101.201.177.5/app/api/study/course/list
- 創建request, 輸入請求名,請求介紹以及所屬請求集
- 選擇請求方法,請求URL,請求參數,header(該實例有token校驗)
- 點擊send發送請求,查看response
- 點擊save,保存該請求實例
基本上,如果是簡單的接口調試就是按照以上的步驟進行操作
postman高階應用
環境變量
全局變量(Globals)
場景:以線上課程為例,請求線上課程需要在header中添加認證,那么每次請求都添加嗎?我們可以設置全局變量
- 添加global
-
設置變量名和value值
initial value: 分享出去給team中的人用時的變量值
current value: 當前自己使用該變量時變量的值
3. 在請求中使用全局變量 格式:{{ 變量名 }}
Environment變量
場景:以線上課程為例,首先在本地環境調試,然后發布到測試環境還需要測試,發布到線上還需要調試,那每次都更換URL嗎?
設置environment變量,可以選擇相應環境,每個環境里有單獨的環境變量使用
- 添加environment變量
-
設置environment變量
設置:環境名
variable: 變量名
initial value: 分享出去給team中的人用時的變量值
current value: 當前自己使用該變量時變量的值
- 使用environment
在postman中使用環境,預覽環境變量,使用環境里設置的環境變量
使用語法:{{ 參數名 }}
collection用例集
在postman中,所有的請求並不都是獨立存在的,我們可以根據項目,根據業務,根據接口的關聯性,依賴性創建請求集來管理我們的接口。
用例集創建
New”-> “Collection”-> “Name”; “Description”
輸入用例集名稱,描述,authorination,pre-request,test等,如果添加了這些配置,那么會對集內的所有請求生效
用例集執行
場景:以線上課程為例,我想看下線上課程列表,線上課程詳情等相關接口是否都正常?頻繁請求這些接口是否有異常?這就可以使用runner,但是runner本身並不能作為一個壓測工具,因為runner執行是阻塞隊列,串行執行請求,並不能拿來做並發測試,但是可以簡單看一下接口的健壯性,如果想對接口進行簡單的壓力測試,可以使用ab,jmeter等工具
- 選擇runner,點擊進入runner設置界面
-
選擇collection,選擇環境,設置運行參數
choose collection: 選擇要運行的用例集
Environment: 選擇環境變量
Iterations: 設置循環次數
Delay: 每次循環的間隔
Log Responses: 響應日志,默認
Data: 選擇csv文件(可以添加測試數據,在tests中用data參數訪問)
通過對運行參數的設置可以完成簡單的並發測試
可以通過console查看具體的request請求,通過run result查看測試結果
用例集分享,導入導出
場景:如果后端同學完成了接口調試,前端是否可以直接拿到相關項目的接口做聯調?或者前端調試問題需要進行mock server,如何拿到別人的接口數據。
有2種方法可以選擇
-
建立team workspace,分享給團隊人員
將個人工作台的collection,分享到team workspace,這樣team里的人就可以在team workspace中看到
- 直接導出文件,然后給其他人再導入 返回文檔
生成API文檔
我們可以直接將collection生成API在線文檔
- 如果是自己直接查看自己寫的接口的在線文檔
-
生成在線文檔給到其他人共享 返回文檔
發布生成一個api文檔鏈接
JavaScript腳本
Postman Sandbox
Postman sandbox 是一個JavaScript執行環境,可以在為請求編寫預請求腳本和測試腳本時使用它。
常用的庫和使用程序
l Lodash: js實用程序庫
l Cheerio:核心jQuery Api的快速精簡實現
l Tv4json模式驗證器: 針對json-schema的v4驗證json對象
l CrytoJS: 標准和安全的加密算法。支持的算法:AES,DES,EvpKDF,HMAC-MD5,HMAC-SHA1 / 3/256/512,MD5,PBKDF2,Rabbit,SHA1 / 3/224/256/512,TripleDES
l Xml2Json: xml文件轉換為json對象
Pre-request JavaScript
預請求腳本:在發送請求前執行的腳本
應用場景:
- 請求前添加動態請求參數
- 請求前添加cookie,header,設置環境變量等
那么預執行腳本可以有哪些操作呢?postman給我們設置好了一些常用的操作
返回文檔
返回文檔
返回文檔
大體上有這么幾種,當然不僅僅這些,可以自己寫js腳本來實現自己的需求
- 獲取全局變量, 設置全局變量
- 獲取局部環境變量,設置局部環境變量
- 清空全局變量,清空局部環境變量
- 發送一個請求
Tests
在請求完成后,我們也通過腳本進行測試或進行一些置后的操作,例如重置環境變量,新增環境變量,或者是一些校驗代碼
postman提供的快捷方法有這些:
- // 測試返回狀態碼
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
2.//測試是否包含某個字段
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
3.//測試解析json數據
pm.test("Your test name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
4.//測試是否等於某個字段
pm.test("Body is correct", function () {
pm.response.to.have.body("response_body_string");
});
5.//檢查header
pm.test("Content-Type is present", function () {
pm.response.to.have.header("Content-Type");
});
6.//請求時間校驗
pm.test("Response time is less than 200ms", function () {
pm.expect(pm.response.responseTime).to.be.below(200);
});
7.//返回值在某個區間
pm.test("Status code name has string", function () {
pm.response.to.have.status("Created");
});
8.//使用json schema 校驗結果
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;
});
Mock Server
應用場景: 后端接口寫的差不多的時候可以直接將postman文件發給前端做mock server,如果前端需要本地復現問題也不需要線上跑業務拿數據再復制下來查看,可以直接用postman中的接口文件做mock server
如何為一個collection創建mock server?
創建mock server
1) 直接創建mock server
“new”-> “mock server”
輸入method,URL path,返回值,它會自動給生成collection及mock URL 以及保存example
2) 給collection創建mock server
在collection中創建一個mock server,創建完成后需要把collection中的請求接口保存為example,編輯返回值等等
編輯mock response(創建example)
編輯mock地址,以及response body,mock地址要用生成mock server時的那個地址,也可以將這個地址設置為環境變量,方便使用。
使用mock server
直接使用生成的mock server地址加請求path 就可以看到mock數據了。