Postman 使用小技巧/指南

1、什麼是 Postman(前世此生)

Postman 誕生於 2013 年,一開始只是 Abhinav Asthana 着手於解決 API 測試的工具,隨着這個工具的使用者和需求迅速激增,Abhinav Asthana 找了他的兩個前同事 Ankit SobtiAbhijit Kane 一塊兒建立了公司 Postman Inc。html

創始人

現在 Postman 已經成爲一個 API 開發的協做平臺。Postman 簡化了構建 API 的每一個步驟,並簡化了協做,這樣就能夠更快地建立 API。git

2、使用變量

Postman 容許用戶在發送和接收時使用變量,以提升工做效率和可讀性(不過只能保存字符串類型的值,因此複雜數據類型須要藉助於 JSON.stringify()JSON.parse() 來管理)。github

例如在不一樣運行環境中設置域名地址爲變量:npm

Postman 支持在不一樣的做用域和上下文中使用變量,遵循就近原則,即若是在 GlobalEnvironment 中都有變量 name,則會取 Environment 中的 namejson

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:局部變量只在單個請求生命週期中可用,運行完成後自動銷燬。dom

    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

3、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');
});

4、使用 Postman 抓包

在 Postman 應用程序中有一個內置代理來捕獲 HTTP 請求。

  1. Postman 應用程序監聽客戶端應用程序或設備發出的任何調用。
  2. Postman 代理捕獲請求並將請求轉發給服務器。
  3. 服務器經過 Postman 代理將響應返回給客戶端。

4.1 開啓抓包

本機 IP 地址:

手機設置:

4.2 抓包效果

5、使用代理

代理服務器是一個應用程序或系統,做爲計算機和互聯網之間的中介,或者更具體地說就是表明着客戶端和服務器,向網站、服務器和其餘互聯網服務發出請求。

除了傳遞信息,代理能夠作更多的事情:

  1. 記錄你的機器和互聯網之間的全部流量。
  2. 顯示全部請求、響應、Cookie 和標題的內容。
  3. 路由流量到指定的因特網位置。
  4. 調試接口。
  5. 防止直接攻擊,保證安全性。
  6. DevOps 負載平衡。

默認狀況下,Postman 將使用自帶的系統代理,若是自定義了代理,優先級將高於自帶的系統代理。

6、使用 Collection Runner

集合運行器(Collection Runner)容許以指定順序運行集合裏面的請求。Collection Runner 將記錄請求測試結果,而且腳本能夠在請求之間傳遞數據。

7、命令行腳手架 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

8、付費功能

另外 Postman 提供了不少團隊協做須要的付費功能,例如:文檔、監控、健康檢查等。

版權聲明

本博客全部的原創文章,做者皆保留版權。轉載必須包含本聲明,保持本文完整,並以超連接形式註明做者後除和本文原始地址:https://blog.mazey.net/1878.html

相關文章
相關標籤/搜索