網站首頁 編程語言 正文
一、什么是 Postman(前世今生)
Postman 誕生于 2013 年,一開始只是 Abhinav Asthana 著手于解決 API 測試的工具,隨著這個工具的使用者和需求迅速激增,Abhinav Asthana 找了他的兩個前同事 Ankit Sobti 和 Abhijit Kane 一起創建了公司 Postman Inc。
如今 Postman 已經成為一個 API 開發的協作平臺。Postman 簡化了構建 API 的每個步驟,并簡化了協作,這樣就可以更快地創建 API。
二、使用變量
Postman 允許用戶在發送和接收時使用變量,以提高工作效率和可讀性(不過只能保存字符串類型的值,所以復雜數據類型需要借助于 JSON.stringify()
和 JSON.parse()
來管理)。
例如在不同運行環境中設置域名地址為變量:
Postman 支持在不同的作用域和上下文中使用變量,遵循就近原則,即如果在 Global
和 Environment
中都有變量 name
,則會取 Environment
中的 name
。
2.1 變量作用域適用于 Postman 中不同的場景
Global:全局變量可以在整個工作空間(Workspace)中使用,因為無法控制使用環境和容易造成混淆,應當是不可變的全局常量,謹慎使用。
pm.globals.set("variable_key", "variable_value"); pm.globals.get("variable_key");
Collection:集合變量在單個集合(Collection)中可用,往往具備通用的業務綁定屬性,例如:商品屬性、會員等級、通用秘鑰等。
pm.collectionVariables.set("variable_key", "variable_value"); pm.collectionVariables.get("variable_key");
Environment:環境變量允許請求適應不同的環境,例如:本地、測試、預演和生產環境,常常用來區別請求地址。
pm.environment.set("variable_key", "variable_value"); pm.environment.get("variable_key");
Data: 數據變量來自外部 CSV 和 JSON 文件,當通過 Newman 或 Runner 來運行時才用到。
Local:局部變量只在單個請求生命周期中可用,運行完成后自動銷毀。
pm.variables.set("variable_key", "variable_value"); pm.variables.get("variable_key");
2.2 編輯全局和環境變量
2.3 編輯集合變量
2.4 使用系統內置動態變量
Postman 內置了很多常見場景的動態變量。
備注:Postman 支持在 Pre-request Script 和 Tests 中打印調試信息,和瀏覽器控制臺一致,可以使用命令:console.log()
、console.info()
、console.warn()
和console.error()
。
console.log('當前時間戳:', pm.variables.replaceIn('{{$timestamp}}')); console.log('隨機顏色:', pm.variables.replaceIn('{{$randomColor}}')); console.log('隨機 IP:', pm.variables.replaceIn('{{$randomIP}}')); console.log('隨機名字:', pm.variables.replaceIn('{{$randomFullName}}')); console.log('隨機職業:', pm.variables.replaceIn('{{$randomJobType}}')); console.log('隨機城市:', pm.variables.replaceIn('{{$randomCity}}')); console.log('隨機圖片:', pm.variables.replaceIn('{{$randomImageUrl}}')); # 輸出 當前時間戳:1609060090 隨機顏色:azure 隨機 IP:163.140.207.64 隨機名字:Chester Funk 隨機職業:Coordinator 隨機城市:Port Devinborough 隨機圖片:http://placeimg.com/640/480
三、Postman 請求生命周期
在 Postman 中,一個完整的 Postman 請求生命周期,除了常規的請求(request)和響應(response),還包括前置請求腳本(pre-request script)和后置測試腳本(tests script)。Postman 包含一個基于 Node.js 的強大運行態(runtime),允許用戶在 pre-request script 和 tests 事件中編寫 JavaScript 代碼。
3.1 在前置請求(pre-request script)中使用腳本
前置請求腳本(pre-request script)顧名思義就是在請求發送之前執行的腳本。
3.2 發送請求(request)
小技巧一:在鏈接中使用 :id
自定義路徑參數
小技巧二:Cookie 可編輯
3.3 接收一個響應(response)
小技巧:保存響應結果
保存后的結果可以作為案例或記錄以便開發使用。
3.4 在測試(tests)中使用腳本
Postman 支持在請求響應后通過測試腳本來驗證請求是否符合預期。
示例一:驗證響應狀態碼是否是 200
pm.test("Status test", function () { pm.response.to.have.status(200); });
示例二:驗證返回的業務數據(JSON)是否符合預期
pm.test("請求成功!", function () { var jsonData = pm.response.json(); pm.expect(jsonData.message).to.eql('success'); });
四、使用 Postman 抓包
在 Postman 應用程序中有一個內置代理來捕獲 HTTP 請求。
- Postman 應用程序監聽客戶端應用程序或設備發出的任何調用。
- Postman 代理捕獲請求并將請求轉發給服務器。
- 服務器通過 Postman 代理將響應返回給客戶端。
4.1 開啟抓包
本機 IP 地址:
手機設置:
4.2 抓包效果
五、使用代理
代理服務器是一個應用程序或系統,作為計算機和互聯網之間的中介,或者更具體地說就是代表著客戶端和服務器,向網站、服務器和其他互聯網服務發出請求。
除了傳遞信息,代理可以做更多的事情:
記錄你的機器和互聯網之間的所有流量。顯示所有請求、響應、Cookie 和標題的內容。路由流量到指定的因特網位置。調試接口。防止直接攻擊,保證安全性。DevOps 負載平衡。
默認情況下,Postman 將使用自帶的系統代理,如果自定義了代理,優先級將高于自帶的系統代理。
六、使用 Collection Runner
集合運行器(Collection Runner)允許以指定順序運行集合里面的請求。Collection Runner 將記錄請求測試結果,并且腳本可以在請求之間傳遞數據。
七、命令行腳手架 Newman
Postman 提供腳手架工具 Newman 來以命令行的方式來運行集合(Collection)請求,其提供和 Postman 桌面端一致的功能,可以集成在工作流的 CI/CD 中。
# 安裝 npm install -g newman # 運行文件 newman run mycollection.json # 運行 URL newman run https://www.postman.com/collections/cb208e7e64056f5294e5 -e dev_environment.json
八、付費功能
另外 Postman 提供了很多團隊協作需要的付費功能,例如:文檔、監控、健康檢查等。
版權聲明
本博客所有的原創文章,作者皆保留版權。轉載必須包含本聲明,保持本文完整,并以超鏈接形式注明作者后除和本文原始地址:https://blog.mazey.net/1878.html
GitHub:mazeyqian
Blog:blog.mazey.net
原文鏈接:https://www.cnblogs.com/mazey/p/14660638.html
相關推薦
- 2022-08-18 Linux阿里云服務器中安裝Nginx命令的詳細過程_服務器其它
- 2023-02-10 python自定義函數中的return和print使用及說明_python
- 2022-11-30 C語言實現單鏈表的基本操作分享_C 語言
- 2022-06-18 使用matplotlib創建Gif動圖的實現_python
- 2022-09-17 Oracle數據庫表備份導入導出dmp的方式及踩坑記錄_oracle
- 2022-05-12 寶塔面板配置SSL證書
- 2022-06-28 ASP.NET一次性對GridView批量更新多行數據_實用技巧
- 2022-10-15 Tomcat架構設計及Servlet作用規范講解_Tomcat
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支