Postman, 學會變數功能快速切換設定值

API 測試相關文章可以參考以下連結:

  1. Postman, API 測試工具教學
  2. Mockoon, 不會寫程式也能自己建立 API 伺服器
  3. Postman, 學會變數功能快速切換設定值

為什麼需要變數

在一個完善的軟體開發環境,我們通常會有多個佈署環境提供不同面向的測試目的與人員使用,常見的例如DevelopStagingUATProduction,當然每間公司文化不同,名稱與數量也都會不一樣,但目的是一致的,減少正式環境出錯的機會。

我們使用 Postman 測試 API 時,肯定不會為了每一個環境都各複製一份測試 API,因為會改變的通常是網域名稱,方法名稱與參數名稱是不會變的

例如:

  • Develop API: http://dev.apie.com/users
  • UAT API: http://uat.apie.com/users

可以看到不同環境的網域不一樣(dev <-> uat),但方法名稱是相同的(users <-> users)

因此這時候有一套設定檔案能夠快速切換會改變的內容就很重要,當然有些人會手動修改或是複製多份,這些方法是不對的,因為容易發生打錯字或是修改一個內容要改很多API。這篇文章就是要介紹 Postman 變數功能。

如何使用變數

在這個環節我們將詳細的一步步解釋如何建立變數

建立環境

  1. 首先點選左邊 Enviornments 按鈕
  2. 點選 + 建立新的環境檔案

alt

  1. 我們先一次建立兩份,分別命名為 myctw_devmyctw_uat

alt

這邊的環境功能相當於兩份設定檔,不同環境的設定值會不一樣。

第一個變數

  1. 點選 myctw_dev 設定檔後,可以看到定義變數的地方了
  2. 我們依序輸入 url, default, 127.0.0.1, 127.0.0.1
  3. 再新增另一個變數 port, default, 30001, 30001

alt

  1. url 在這邊就是我們的變數名稱
  2. 接著點選 myctw_uat 設定檔
  3. 依序輸入 url, default, 127.0.0.1, 127.0.0.1
  4. 第二個變數 port, default, 30050, 30050

alt

使用變數

(為了測試方便,我們一律使用 HTTP GET)
在上面我們定義好一個名為 url 的變數後,接下來要實際應用在我們的 API 上面了!

Postman 的變數使用方式為 {{變數名稱}},就是兩個大括號包起來,以上為例就是{{url}}

  1. 點選 API 後,於網址列輸入測試 API URL,最終應該會長這樣 http://{{url}}:{{port}}/users

alt

  1. 還別急著送出,注意看右上角使用的設定檔是哪一份,可以隨著你希望測試的環境來切換
    (以下結果我是透過 Mockoon 建立 Mock server API,如果不會的話也能夠參考文章開頭的連結自行建立喔)

alt

  • Develop Environment
    使用 dev 的設定檔時,就會套用稍早 dev 的變數
    alt

  • UAT Environment
    使用 uat 的設定檔時,就會套用稍早 uat 的變數
    alt

可以從 Console tab 或是內容看到發送到不同環境的 URL 與結果,這樣就達成我們快速切換環境設定檔的目的了!


變數作用範圍

在學會使用變數後,我們還必須要了解程式世界裡面的變數特性,對大部分語言來說變數都是有作用域(Scope)的,最大的範圍通常稱為 Global,而 Postman 中還有分為 Collection variable、Environment variable 與 Local variable。

  • Global: 最大範圍,可以在任意情境中使用
  • Collection: 集合,就是我們在建立 API 時的集合,在這裡面建立的變數僅能在該集合中使用,一旦選擇另一個集合就會提示你 Postman 不認得這個變數。
  • Environment: 環境變數,如同上面教學的內容,這個是可以跨集合使用,但是不同環境所用的值就不同。
  • Local: 本地變數,僅能在該次的 API 執行、請求中使用,當 API 呼叫的生命週期結束後就無法再使用了。

既然 Global 作為最大範圍的變數,有時候會與其他作用域的變數名稱重複,例如:

Scope Variable Name Value
Global userName GlobalUser
Collection userName CollectionUser

Global 有一個變數叫 userName,Collection 也有一個變數叫 userName,這時候 Postman 會使用範圍較小的變數為主,所以最終得到的值是CollectionUser


正確地替變數設計作用域是非常重要的,避免未來在設計整套 API 自動測試與流程測試時弄得一團亂,絕對會是像打結的毛線球一樣難以解開,因此初期千萬別偷懶亂設定了。

  • 作者: MingYi Chou
  • 版權聲明: 轉載不用問,但請註明出處!本網誌均採用 BY-NC-SA 許可協議。