API 測試相關文章可以參考以下連結:
為什麼需要變數
在一個完善的軟體開發環境,我們通常會有多個佈署環境提供不同面向的測試目的與人員使用,常見的例如Develop
、Staging
、UAT
、Production
,當然每間公司文化不同,名稱與數量也都會不一樣,但目的是一致的,減少正式環境出錯的機會。
我們使用 Postman 測試 API 時,肯定不會為了每一個環境都各複製一份測試 API,因為會改變的通常是網域名稱,方法名稱與參數名稱是不會變的
例如:
- Develop API:
http://dev.apie.com/users
- UAT API:
http://uat.apie.com/users
可以看到不同環境的網域不一樣(dev
<-> uat
),但方法名稱是相同的(users
<-> users
)
因此這時候有一套設定檔案能夠快速切換會改變的內容就很重要,當然有些人會手動修改或是複製多份,這些方法是不對的,因為容易發生打錯字或是修改一個內容要改很多API。這篇文章就是要介紹 Postman 變數功能。
如何使用變數
在這個環節我們將詳細的一步步解釋如何建立變數
建立環境
- 首先點選左邊
Enviornments
按鈕 - 點選
+
建立新的環境檔案
- 我們先一次建立兩份,分別命名為
myctw_dev
與myctw_uat
這邊的環境功能相當於兩份設定檔,不同環境的設定值會不一樣。
第一個變數
- 點選
myctw_dev
設定檔後,可以看到定義變數的地方了 - 我們依序輸入
url
,default
,127.0.0.1
,127.0.0.1
- 再新增另一個變數
port
,default
,30001
,30001
url
在這邊就是我們的變數名稱- 接著點選
myctw_uat
設定檔 - 依序輸入
url
,default
,127.0.0.1
,127.0.0.1
- 第二個變數
port
,default
,30050
,30050
使用變數
(為了測試方便,我們一律使用 HTTP GET)
在上面我們定義好一個名為 url
的變數後,接下來要實際應用在我們的 API 上面了!
Postman 的變數使用方式為 {{變數名稱}}
,就是兩個大括號包起來,以上為例就是{{url}}
- 點選 API 後,於網址列輸入測試 API URL,最終應該會長這樣
http://{{url}}:{{port}}/users
- 還別急著送出,注意看右上角使用的設定檔是哪一份,可以隨著你希望測試的環境來切換
(以下結果我是透過 Mockoon 建立 Mock server API,如果不會的話也能夠參考文章開頭的連結自行建立喔)
Develop Environment
使用 dev 的設定檔時,就會套用稍早 dev 的變數UAT Environment
使用 uat 的設定檔時,就會套用稍早 uat 的變數
可以從 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 自動測試與流程測試時弄得一團亂,絕對會是像打結的毛線球一樣難以解開,因此初期千萬別偷懶亂設定了。