Postman 使用指南及小技巧
一、什么是 Postman(前世今生)
Postman 誕生于 2013 年,一開始只是 Abhinav Asthana 著手于解決 API 測試的工具,隨著這個(gè)工具的使用者和需求迅速激增,Abhinav Asthana 找了他的兩個(gè)前同事 Ankit Sobti 和 Abhijit Kane 一起創(chuàng)建了公司 Postman Inc。
如今 Postman 已經(jīng)成為一個(gè) API 開發(fā)的協(xié)作平臺。Postman 簡化了構(gòu)建 API 的每個(gè)步驟,并簡化了協(xié)作,這樣就可以更快地創(chuàng)建 API。
二、使用變量
Postman 允許用戶在發(fā)送和接收時(shí)使用變量,以提高工作效率和可讀性(不過只能保存字符串類型的值,所以復(fù)雜數(shù)據(jù)類型需要借助于 JSON.stringify()
和 JSON.parse()
來管理)。
例如在不同運(yùn)行環(huán)境中設(shè)置域名地址為變量:
Postman 支持在不同的作用域和上下文中使用變量,遵循就近原則,即如果在 Global
和 Environment
中都有變量 name
,則會取 Environment
中的 name
。
2.1 變量作用域適用于 Postman 中不同的場景
Global:全局變量可以在整個(gè)工作空間(Workspace)中使用,因?yàn)闊o法控制使用環(huán)境和容易造成混淆,應(yīng)當(dāng)是不可變的全局常量,謹(jǐn)慎使用。
pm.globals.set("variable_key", "variable_value"); pm.globals.get("variable_key");
Collection:集合變量在單個(gè)集合(Collection)中可用,往往具備通用的業(yè)務(wù)綁定屬性,例如:商品屬性、會員等級、通用秘鑰等。
pm.collectionVariables.set("variable_key", "variable_value"); pm.collectionVariables.get("variable_key");
Environment:環(huán)境變量允許請求適應(yīng)不同的環(huán)境,例如:本地、測試、預(yù)演和生產(chǎn)環(huán)境,常常用來區(qū)別請求地址。
pm.environment.set("variable_key", "variable_value"); pm.environment.get("variable_key");
Data: 數(shù)據(jù)變量來自外部 CSV 和 JSON 文件,當(dāng)通過 Newman 或 Runner 來運(yùn)行時(shí)才用到。
Local:局部變量只在單個(gè)請求生命周期中可用,運(yùn)行完成后自動銷毀。
pm.variables.set("variable_key", "variable_value"); pm.variables.get("variable_key");
2.2 編輯全局和環(huán)境變量
2.3 編輯集合變量
2.4 使用系統(tǒng)內(nèi)置動態(tài)變量
Postman 內(nèi)置了很多常見場景的動態(tài)變量。
備注:Postman 支持在 Pre-request Script 和 Tests 中打印調(diào)試信息,和瀏覽器控制臺一致,可以使用命令:console.log()
、console.info()
、console.warn()
和console.error()
。
console.log('當(dāng)前時(shí)間戳:', pm.variables.replaceIn('{{$timestamp}}')); console.log('隨機(jī)顏色:', pm.variables.replaceIn('{{$randomColor}}')); console.log('隨機(jī) IP:', pm.variables.replaceIn('{{$randomIP}}')); console.log('隨機(jī)名字:', pm.variables.replaceIn('{{$randomFullName}}')); console.log('隨機(jī)職業(yè):', pm.variables.replaceIn('{{$randomJobType}}')); console.log('隨機(jī)城市:', pm.variables.replaceIn('{{$randomCity}}')); console.log('隨機(jī)圖片:', pm.variables.replaceIn('{{$randomImageUrl}}')); # 輸出 當(dāng)前時(shí)間戳:1609060090 隨機(jī)顏色:azure 隨機(jī) IP:163.140.207.64 隨機(jī)名字:Chester Funk 隨機(jī)職業(yè):Coordinator 隨機(jī)城市:Port Devinborough 隨機(jī)圖片:http://placeimg.com/640/480
三、Postman 請求生命周期
在 Postman 中,一個(gè)完整的 Postman 請求生命周期,除了常規(guī)的請求(request)和響應(yīng)(response),還包括前置請求腳本(pre-request script)和后置測試腳本(tests script)。Postman 包含一個(gè)基于 Node.js 的強(qiáng)大運(yùn)行態(tài)(runtime),允許用戶在 pre-request script 和 tests 事件中編寫 JavaScript 代碼。
3.1 在前置請求(pre-request script)中使用腳本
前置請求腳本(pre-request script)顧名思義就是在請求發(fā)送之前執(zhí)行的腳本。
3.2 發(fā)送請求(request)
小技巧一:在鏈接中使用 :id
自定義路徑參數(shù)
小技巧二:Cookie 可編輯
3.3 接收一個(gè)響應(yīng)(response)
小技巧:保存響應(yīng)結(jié)果
保存后的結(jié)果可以作為案例或記錄以便開發(fā)使用。
3.4 在測試(tests)中使用腳本
Postman 支持在請求響應(yīng)后通過測試腳本來驗(yàn)證請求是否符合預(yù)期。
示例一:驗(yàn)證響應(yīng)狀態(tài)碼是否是 200
pm.test("Status test", function () { pm.response.to.have.status(200); });
示例二:驗(yàn)證返回的業(yè)務(wù)數(shù)據(jù)(JSON)是否符合預(yù)期
pm.test("請求成功!", function () { var jsonData = pm.response.json(); pm.expect(jsonData.message).to.eql('success'); });
四、使用 Postman 抓包
在 Postman 應(yīng)用程序中有一個(gè)內(nèi)置代理來捕獲 HTTP 請求。
- Postman 應(yīng)用程序監(jiān)聽客戶端應(yīng)用程序或設(shè)備發(fā)出的任何調(diào)用。
- Postman 代理捕獲請求并將請求轉(zhuǎn)發(fā)給服務(wù)器。
- 服務(wù)器通過 Postman 代理將響應(yīng)返回給客戶端。
4.1 開啟抓包
本機(jī) IP 地址:
手機(jī)設(shè)置:
4.2 抓包效果
五、使用代理
代理服務(wù)器是一個(gè)應(yīng)用程序或系統(tǒng),作為計(jì)算機(jī)和互聯(lián)網(wǎng)之間的中介,或者更具體地說就是代表著客戶端和服務(wù)器,向網(wǎng)站、服務(wù)器和其他互聯(lián)網(wǎng)服務(wù)發(fā)出請求。
除了傳遞信息,代理可以做更多的事情:
記錄你的機(jī)器和互聯(lián)網(wǎng)之間的所有流量。顯示所有請求、響應(yīng)、Cookie 和標(biāo)題的內(nèi)容。路由流量到指定的因特網(wǎng)位置。調(diào)試接口。防止直接攻擊,保證安全性。DevOps 負(fù)載平衡。
默認(rèn)情況下,Postman 將使用自帶的系統(tǒng)代理,如果自定義了代理,優(yōu)先級將高于自帶的系統(tǒng)代理。
六、使用 Collection Runner
集合運(yùn)行器(Collection Runner)允許以指定順序運(yùn)行集合里面的請求。Collection Runner 將記錄請求測試結(jié)果,并且腳本可以在請求之間傳遞數(shù)據(jù)。
七、命令行腳手架 Newman
Postman 提供腳手架工具 Newman 來以命令行的方式來運(yùn)行集合(Collection)請求,其提供和 Postman 桌面端一致的功能,可以集成在工作流的 CI/CD 中。
# 安裝 npm install -g newman # 運(yùn)行文件 newman run mycollection.json # 運(yùn)行 URL newman run https://www.postman.com/collections/cb208e7e64056f5294e5 -e dev_environment.json
八、付費(fèi)功能
另外 Postman 提供了很多團(tuán)隊(duì)協(xié)作需要的付費(fèi)功能,例如:文檔、監(jiān)控、健康檢查等。
版權(quán)聲明
本博客所有的原創(chuàng)文章,作者皆保留版權(quán)。轉(zhuǎn)載必須包含本聲明,保持本文完整,并以超鏈接形式注明作者后除和本文原始地址:https://blog.mazey.net/1878.html
GitHub:mazeyqian
Blog:blog.mazey.net
到此這篇關(guān)于Postman 使用指南及小技巧的文章就介紹到這了,更多相關(guān)Postman 使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
網(wǎng)絡(luò)抓包工具wireshark入門教程詳解
Wireshark是一個(gè)網(wǎng)絡(luò)數(shù)據(jù)包分析軟件,功能非常強(qiáng)大,奈何他是英文版的,今天就為大家詳細(xì)介紹一下網(wǎng)絡(luò)抓包工具wireshark的使用教程2018-10-10搭建websocket消息推送服務(wù),必須要考慮的幾個(gè)問題
面對各種新場景對websocket功能和性能越來越高的需求,不同的團(tuán)隊(duì)有不同的選擇,下面給大家分享構(gòu)建websocket服務(wù)時(shí)必須要考慮的一些技術(shù)特性以及能顯著提高用戶體驗(yàn)的功能,感興趣的朋友跟隨小編一起看看吧2020-04-04解決SecureCRT通過SSH連接Ubuntu時(shí)vi命令有多余的m的問題
小編遇到這樣一個(gè)問題用vi命令來編輯文件的時(shí)候,在開頭和結(jié)尾有多余的字母出現(xiàn):在開頭會有多余的“m”出現(xiàn),結(jié)尾有多余的“2m”,這篇文章主要介紹了解決SecureCRT通過SSH連接Ubuntu時(shí)vi命令有多余的m的問題,需要的朋友可以參考下2022-09-09wireshark網(wǎng)絡(luò)抓包工具的使用教程
WireShark是非常流行的網(wǎng)絡(luò)抓包分析工具,可以截取各種網(wǎng)絡(luò)數(shù)據(jù)包,并顯示數(shù)據(jù)包詳細(xì)信息,下面就跟隨小編一起學(xué)習(xí)一下wireshark的具體使用吧2023-08-08git 配置多個(gè)SSH-Key實(shí)現(xiàn)示例
這篇文章主要為大家介紹了git 配置多個(gè)SSH-Key實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07vscode檢測到#include錯(cuò)誤請更新includePath的解決方法
這篇文章主要介紹了vscode檢測到#include錯(cuò)誤請更新includePath的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08