2021年8月8日 星期日

Postman 的變數設定

使用 Postman 可以很方便的測試 WebApi,一些參數亦可依照待測目標不同,透過類似

config 設定檔的方式,有設定管理介面,輕鬆自在的切換到各環境之間...


Global 變數

同一個 Workspaces 下,任何地方都可以使用,不隨環境不同而變動的值,越穩定越好


新增 global 變數

點選 Environments ,再點選 Global 項目,新增 x-key-api 變數,如下圖


使用 global 變數

可在 request url 使用,下圖可以看出 x-key-api 前綴圖示為 G 開頭,代表 global


可在 request authorization 等地方使用,下圖可以看出 x-key-api


可在 request body 等地方使用,下圖可以看出 x-key-api


Environments 變數

同一個 Workspaces 下可以有一至多個 Environment,通常這類的環境變數可以是 url、

測試用帳密,可能對應 dev、stage、prod 環境。

建立 environment

可以點藍色連結或是 上方的 「+」號


點選之後,可以先設定名稱,而上方的 Globals 提醒是這個是全域的設定(所有 Collection 都可存取),


若後續還有要調整,亦可在清單中點選要修改的項目,並點選右方的「...」,就可以選擇要操作的

功能


若是要修改名稱,亦可以在點選該 environment 項目後,右方視窗的名稱後面,

有個編輯的 icon,點選下去即可再次編輯名稱



新增 environment 變數

新增 domain 變數,並輸入 current value 為 https://test.com,如下圖


使用 environment 變數

依下圖步驟設定

第1點:切換到 Collection

第2點:新增 Test Collection,先新增 request get

第3點:設定request url,這邊設定 {{domin}}/uers/,其中 {{}} 代表來自變數

第4點:來右邊切換環境,預計選擇剛剛設定的 dev 

第5點:在下方的 Pre-request 頁籤,嘗試抓取 domain 變數,並且印出,可透過 pm.environment.get(key);

語法來取得 環境變數的值


若切換到dev 環境,網址列的 {{domain}} 變數就不會是「紅色」,而是「橙色」


此時點「Send」按鈕後檢視 Log,如下圖

可以看到,印出 en_domain 確實如我們設定的值,且下一列是送出的 request url 網址,也是正確



Collection 變數

這邊建立的變數,在該 collection 下所屬的 request 皆可以使用,方便管理這同一類型的

request 共用的變數

新增 collection 變數

如下圖所示

第1點:點選 Collections 

第2點:選擇預計要設定的colection ,這邊是 Test collection

第3點:切到 Variables 頁籤

第4點:新增 id 變數,並且設定 current value 為 8,可透過pm.collectionVariables.get(key);

語法來取得 collection 變數的值



儲存後,接下來看如何使用


使用 collection 變數


如下圖所示設定

第1點:點選 collections 準備設定

第2點:切到要設定的 request 選項

第3點:request url 中設定使用參數 {{id}}

第4點:點選 Pre-request 頁籤,嘗試取得 id 值,並且透過 log 印出



此時點「Send」按鈕後檢視 Log,如下圖

可以看到,印出 id 確實如我們設定的值,且下一列是送出的 request url 網址,也是正確



Local 變數

這邊的變數顧名思義就是僅能在該 request 範圍內有效,這類型沒有設定介面,

須注意僅能透過撰寫script 來設定。


新增 Local 變數

如下圖所示

第1點:複製 get request 

第2點:調整為 http post 動作

第3點:切到 body 頁籤,接著點選 row 為 json 並設定內容,這邊有個變數

{{local_domain}}、{{local_id}}


設定好後來看看如何使用


使用 Local 變數

如下圖所示設定

切換頁籤到 Pre-requset ,並且設定內容,其中可以透過 pm.variables.set(key,value) 來設定 local 變數值


此時點「Send」按鈕後檢視 Log,如下圖

可以看到,印出 local_domain、 local_id 確實如我們設定的值,request body 內容也有換成我們設定的值



Tips:Scope

設定變數的地方很多,若是相同名稱則會互蓋情形,故存取範圍要注意,先來看看官網的

圖示(如下),所以 environment 比 collection 優先權還大,若兩者都有相同名稱變數,會

優先採用 environment 的值。另外圖中紀載的 data 類型,雖沒有說明,但指的

就是檔案 cvs、json 等,通常會在 collection runner 或 newman 使用...




這邊實際測試 environment 比 collection 兩者狀況,先來看一下,點選 request,滑鼠停在 url id 上,

可以看到資訊視窗說明 scope 為 collection 且值為8


這時,切到 environment 新增一個同為 id 的變數,並且設定值為 77


再次切回 collection 檢視剛剛的 url id,如下圖所示,此時scope 變成 environment


送出的 url 就會是 77,故證明 environment 比 collection 優先級較高



Tips:快速修改 Environments 與 Global 變數

Posman 提供了快速修改 environment 與 Global 變數的體驗,在介面右上方,有一個

類似 眼睛的 icon,點下去後會列出目前所選取的環境內容,如下圖

其中上半部為目前所選取 env 的變數清單,下半部為 globals 的變數清單


這邊我們嘗試編輯 id 的值,修改為 33 ,並且檢視 url id 值(若要編輯該 environment 可直接點選右上方 Edit)



Tips:變數 Initial Value 與 Current Value 差異

在設定時會看到如下畫面,分別有 initial value 與 current value 欄位,兩者的差異為何?

一般使用script 語法 get 或 set variables 時,都是針對 current value 欄位,而使用

set 語法時,會將值寫到 current value 欄位,設定介面上會看到修改後的值;由此可知,

initial value 其實是用來紀錄初始值,即使過程中調整了值,還是可以讓你檢視最初的

狀態,感覺滿貼心的


參考

沒有留言:

張貼留言