一文全面解析 Postman 工具


基礎功能 常見類型的接口請求 接口響應數據的解析 接口管理(Collection) 批量執(zhí)行接口請求 日志調試 斷言 變量 請求前置腳本 接口關聯(lián) 常見的返回值獲取 便捷功能快 速填寫查詢參數 快速填寫請求頭信息 快速實現添加一個請求 如何繼承集合認證 批量斷言 快速查詢和替換 高級功能 讀取文件進行參數化 生成測試報告 代碼中發(fā)送請求 編寫接口文檔 mock服務 監(jiān)控 使用工作空間 代碼同步與分支管理 連接數據庫 apis
一. postman安裝說明




二.postman基礎功能


請求方法:POST 請求URL: http://localhost/index.php?m=Home&c=User&a=do_login&t=0.21942974229794432 請求頭:Content-Type:application/x-www-form-urlencode 請求體:username=13088888888&password=123456&verify_code=8888
打開postman,新建一個請求 。 在請求中設置以上四個參數,點擊Send按鈕。在postman中設置請求體類型為,需要選擇body-> x-www-form-urlencoded 查看響應數據。

POST http://localhost/index.php/home/Uploadify/imageUp/savepath/head_pic/pictitle/banner/dir/images.html HTTP/1.1
Content-Type: multipart/form-data
file=a1.jpg
請求方法:POST 請求URL: http://localhost/index.php/home/Uploadify/imageUp/savepath/head_pic/pictitle/banner/dir/images.html 請求類型:multipart/form-data 請求體:file=a1.jpg
打開postman,新建一個請求 。 在請求中設置以上四個參數,點擊Send按鈕。注意:在postman中設置請求體類型,需要選擇body-> form-data 。file中要選擇File類型,然后上傳本地的文件 。 查看響應數據。

POST http://xxx/api/sys/login HTTP/1.1
Content-Type: application/json;charset=UTF-8
{"account":"root","password":"123456"}
請求方法:POST 請求地址:http://xxx/api/sys/login 請求體類型:json 請求體數據:{"account":"root","password":"123456"}
打開postman,新建一個請求 。 在請求中設置以上四個參數,點擊Send按鈕。注意:在postman中設置請求體類型,需要選擇body-> raw -JSON 查看響應數據。


狀態(tài)行:Status:200 OK 響應頭:Headers + Cookies,需要注意的是Cookies是包含在響應頭中的,但是為了明顯,工具會分開顯示 響應體:Body
Body和Status是我們做接口測試的重點,一般來說我們都會驗證響應體中的數據和響應狀態(tài)碼 Test Results 是我們編寫斷言后,可以查看斷言的執(zhí)行結果 ,所以這個對我們也很有用 。 Time 和Size 是我們做性能測試時,可以根據這兩個參數來對所測接口的性能做一個簡單的判斷。


用例分類管理,方便后期維護 可以進行批量用例回歸測試 。







斷言統(tǒng)計:左上角的兩個0是統(tǒng)計當前Collection中斷言成功的執(zhí)行數和失敗的執(zhí)行數,如果沒有編寫斷言默認都為0 。 Run Summary: 運行結果總覽,點擊它可以看到每個請求中具體的測試斷言詳細信息 。Export Result:導出運行結果,默認導出的結果json文件 。 Retry: 重新運行,點擊它會把該Collection重新運行一遍 New:返回到Runner,可以重新選擇用例的組合 。



搜索日志:輸入URL或者打印的日志就能直接搜索出我們想要的請求和日志,這對我們在眾多日志中查找某一條日志是非常方便的 。 按級別搜索:可以查詢log,info,warning,error級別的日志 ,有助于我們更快定位到錯誤 。 查看原始報文(Show raw log):如果習慣看原始請求報文的話,這個功能可能更方便些 。 隱藏請求(Hide network):把請求都隱藏掉,只查看輸出日志 。
斷言編寫位置:Tests標簽 斷言所用語言:JavaScript 斷言執(zhí)行順序:在響應體數據返回后執(zhí)行 。 斷言執(zhí)行結果查看:Test Results

斷言狀態(tài)碼:Status code: code is 200
pm.test("Status code is 200", function () {
pm.response.to.have.status(200); //這里填寫的200是預期結果,實際結果是請求返回結果
});
斷言狀態(tài)消息:Status code:code name has string
pm.test("Status code name has string", function () {
pm.response.to.have.status("OK"); //斷言響應狀態(tài)消息包含OK
});
斷言響應頭中包含:Response headers:Content-Type header check
pm.test("Content-Type is present", function () {
pm.response.to.have.header("Content-Type"); //斷言響應頭存在"Content-Type"
});
斷言響應體中包含XXX字符串:Response body:Contains string
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
//注解
pm.expect(pm.response.text()).to.include("string") 獲取響應文本中包含string
斷言響應體等于XXX字符串:Response body : is equal to a string
pm.test("Body is correct", function () {
pm.response.to.have.body("response_body_string");
});
//注解
pm.response.to.have.body("response_body_string"); 獲取響應體等于response_body_string
斷言響應體(json)中某個鍵名對應的值:Response body : JSON value check
pm.test("Your test name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
//注解
var jsonData = pm.response.json() 獲取響應體,以json顯示,賦值給jsonData .注意:該響應體必須返會是的json,否則會報錯
pm.expect(jsonData.value).to.eql(100) 獲取jsonData中鍵名為value的值,然后和100進行比較
斷言響應時間:Response time is less than 200ms
pm.test("Response time is less than 200ms", function () {
pm.expect(pm.response.responseTime).to.be.below(200); //斷言響應時間<200ms
});
{
"cityid": "101120101",
"city": "濟南",
"update_time": "2020-04-17 10:50",
"wea": "晴",
"wea_img": "qing",
"tem": "16",
"tem_day": "20",
"tem_night": "9",
"win": "東北風",
"win_speed": "3級",
"win_meter": "小于12km/h",
"air": "113"
}
斷言響應狀態(tài)碼為200 斷言city等于濟南 斷言update_time包含2020-04-17

全局變量:一旦申明了全局變量,全局有效,也就是說postman中的任何集合,任何請求中都可以使用這個變量。它的作用域是最大的 。 環(huán)境變量:要申明環(huán)境變量,首先的創(chuàng)建環(huán)境,然后在環(huán)境中才能創(chuàng)建變量 。如果要想使用環(huán)境變量,必須先選擇(導入)這個環(huán)境,這樣就可以使用這個環(huán)境下的變量了 。需要說明的是環(huán)境也可以創(chuàng)建多個 。每個環(huán)境下又可以有多個變量 。 集合變量:集合變量是針對集合的,也就是說申明的變量必須基于某個集合,它的使用范圍也只是針對這個集合有效 。
定義變量(設置變量) 獲取變量(訪問變量)




定義全局變量:pm.collectionVariables.set("變量名",變量值) 定義環(huán)境變量:pm.environment.set("變量名",變量值) 定義集合變量:pm.variables.set("變量名",變量值)
請求參數指的是:URL,Params , Authorization , Headers , Body
獲取環(huán)境變量:pm.environment.get(‘變量名’) 獲取全局變量:pm.globals.get('變量名') 獲取集合變量:pm.pm.collectionVariables.get.get('變量名')

請求的登錄接口URL,參數t的值要求的規(guī)則是每次請求都必須是一個隨機數。 接口地址: http://localhost/index.php?m=Home&c=User&a=do_login&t=0.7102045930338428

在前置腳本中編寫生成隨機數 將這個值保存成環(huán)境變量 將參數t的值替換成環(huán)境變量的值 。

提取上一個接口的返回數據值, 將這個數據值保存到環(huán)境變量或全局變量中 在下一個接口獲取環(huán)境變量或全局變量
用戶上傳頭像功能,需要用戶先上傳一張圖片,然后會自動預覽 。那么在這個過程中,會調用到倆個接口 ,第一個上傳頭像接口,第二個預覽圖像接口 。 其中調用上傳頭像接口成功后會返回如下信息:
{
"url": "/public/upload/user//head_pic//ba51d1c2f7f7b98dfb5cad90846e2d79.jpg",
"title": "banner",
"original": "",
"state": "SUCCESS",
"path": "images"
}
獲取上傳頭像接口返回url的值 將這個值保存成全局變量(環(huán)境變量也可以) 在圖像預覽中使用全局變量

{
"code": 0,
"message": "請求成功!",
"data": {
"user_id": "1252163151781167104"
}
}
//獲取json體數據
var jsonData = pm.response.json()
// 獲取user_id的值,通過.獲取
var user_id = jsonData.data.user_id
{
"code": 0,
"message": "請求成功!",
"data": {
"roles": {
"api": [
"API-USER-DELETE"
],
"points": [
"point-user-delete",
"POINT-USER-UPDATE",
"POINT-USER-ADD"
]
},
"authCache": null
}
}
//獲取json體數據
var jsonData = pm.response.json()
// 獲取user_id的值,通過下標獲取列表中某個元素
var user_id = jsonData.data.roles.points[1]
{
"code": 0,
"message": "請求成功!",
"data": {
"total": 24,
"rows": [
{
"id": "1066370498633486336",
"mobile": "15812340003",
"username": "zbz"
},
{
"id": "1071632760222810112",
"mobile": "16612094236",
"username": "llx"
},
...
{
"id": "1075383133106425856",
"mobile": "13523679872",
"username": "test001",
},
//獲取json體數據
var jsonData = pm.response.json()
// 獲取id的值,通過slice(-1)獲取列表中最后一個元素。
var id = jsonData.data.rows.slice(-1)[0]
推薦閱讀
35年前,微軟前CEO帶貨是什么水平?
百度偷偷干了一件事,大家都不知道....
移動支付大漏洞:手機一丟,傾家蕩產!
一鍵三連「分享」、「點贊」和「在看」
技術干貨與你天天見~
評論
圖片
表情




