Postman:變量

變量

藉助變量,Postman可以實現業務邏輯與測試數據相分離,這有助於用戶創建健壯性的測試用例

 

什麼是變量

變量是來源於數學的概念,在計算機語言中指能儲存計算結果或能表示值的抽象概念。變量可以通過變量名訪問。簡單的來說,變量就是可以取不同值得符號

 

爲什麼使用變量

變量允許在多個位置重用同一個值,這樣就可以使代碼保持獨立。另外,如果想要更改值則可以通過改變變量來影響變量的值

如:假設有3個API請求使用同一個域-----domain.com
第一個API請求:baidu.com/x1
第二個API請求:baidu.com/x2
第三個API請求:baidu.com/x3

如果有一天baidu.com變成了so.com,若沒有使用變量則需要修改上面3個API請求的URL。但如果將baidu.com設置爲了變量,比如{{domain}}=baidu.com,那麼上面3個API請求就變成了下面的形式:
第一個API請求:{{domain}}/x1
第二個API請求:{{domain}}/x2
第三個API請求:{{domain}}/x3

1、此時如果需要將baidu.com改爲so.com的話,就只需要改變變量domain的值即可:{{domain}}=so.com

2、當然也可以將x1、x2、x3定義爲變量

注:
1、使用Postman的腳本,用戶可以設置變量值,從一個請求複製數據,並將其用於另一個請求

2、在Postman中使用變量有如下好處:
    ⑴重複使用變量定義的值,以便保持代碼的可讀性、可維護性等
    ⑵靈活的配置我們的設置以適應不同的用戶或環境
    ⑶從響應中提取數據並向集合中的其它請求發起請求

 

變量作用域

作用域其實就是變量的生效範圍和優先級。如果同一個變量在兩個不同的範圍內,那麼優先從更高優先級的範圍和變量中取值。Postman遵循以下4個層次來取值變量的值
1、全局變量:Global,在所有環境下都生效
2、集合變量:collection,只在所屬集合下生效
3、環境變量:Environment,只在變量所屬環境下生效
4、本地變量:Local,針對單個請求
5、數據變量:Data,感覺是針對同一個集合中的所有請求

1、上面4個變量域的優先級從低到高:全局<集合<環境<本地<數據

2、如:Global中有個變量name=jack,而Environment中也有一個變量name=rose,那麼請求中的name變量值爲rose。換句話說,全局變量會被環境變量覆蓋,而環境變量會被數據變量覆蓋(僅在集合中使用數據驅動可用)

 

變量的使用場景

Postman的變量主要用於參數化和關聯

應用1: 常用變量可以按使用範圍設置成集合或全局變量

應用2: 一套接口要在不同的環境上測試時, 可以新建兩個環境,比如test環境和stage環境, 兩個環境中添加base_url變量並設置不同的值, 請求中接口的url中使用{{base_url}}, 這樣只需在Postman中切換環境就可以測試不同的環境

應用3: 接口依賴, 由於Postman的請求是隻讀的, 我們在Pre-request Script腳本中不能修改已設置好的請求, 這時我一般通過腳本將所需變量設置爲集合/全局/環境變量, 然後在請求中使用{{變量名}}讀取變量即可

 

構建請求時訪問變量

1、在Postman界面上,我們可以用{{variableName}}這樣的形式訪問變量。當Postman解析變量時,字符串{{variableName}}將被替換爲相應的值。

例如,對於值爲http://localhost的環境變量url,我們必須在請求URL字段中使用{{url}}。發送請求時,{{url}}將被http://localhost替換

2、由於變量在請求builder中被訪問是使用字符串代替的,因此,你可以在請求builder的任何地方添加文本,這包括URL,URL parameters,headers,authorization, request body ,header presets。Postman根據變量範圍部分中討論的範圍規則解析變量,並將它們發送到服務器

 

 

環境變量

1、每個環境變量都是一組鍵值對,其中鍵爲變量名。用戶可以使用數據編輯器編輯這些內容

2、環境變量將始終作爲字符串儲存(全局變量也是)。如果正在儲存對象、數組,應使用JSON.stringify()將其轉爲JSON格式再儲存,使用的時候再借助JSON.parse()解析

3、環境變量:指在不同環境下,同一個變量值隨着環境的不同而變化

4、環境變量可以在url 中使用,也可以在header 中能使用,還能在請求體中使用


什麼是環境變量

在使用API時,經常需要不同的設置,如本地計算機、開發服務器或生產環境API。環境變量使用戶能夠通過變量來定製請求,這樣就可以輕鬆地在不同的環境之間切換,而不需要改變請求。環境變量可以下載並保存爲JSON文件,在需要的時候上傳

例:
測試環境,host值:test.postman.com

生產環境,host值:postman-echo.com

按照常規思路,一種方式是需要維護2套環境的API,另一種方式是每次都需要手動逐個去修改URL。不管哪種選擇都比較麻煩且低效,Postman提供了一套比較好的方法通過配置Environment來解決這個問題

 

創建、管理環境變量

1、在Postman界面右上角,點擊"齒輪"圖標,即可開始設置環境變量和全局變量。此時需要對環境變量設置2種環境:test環境、release環境(test——開發測試環境,release——正式的生產環境)

2、在這個窗口中除了創建和共享環境變量之外,還可以複製、導出和刪除環境變量,也可以導入環境變量的JSON文件


注:
VARIAVLE: 變量名
INITIAL VALUE: 共享初始值, 用於團隊共享時供別人使用的默認值
CURRENT VALUE: 當前值, 自己當前使用的變量值(一般我們只用設置這個值即可)
Perisit All: 保持所有, 將當前自己使用的值(CURRENT VALUE)替換所有的初始值
Reset All: 重置所有, 將當前所有的CURRENT VALUE重置爲與當前初始值一樣


選擇、查看當前環境變量

在Postman窗口右上角的下拉菜單,選擇一個環境變量作爲當前的環境變量,或輸入環境變量名,會自動匹配相應的環境變量。一旦選擇了一個環境變量,就可以在當前環境變量範圍內訪問變量

注:
在查看環境變量頁面中,點擊[Edit]或當前值後面的"筆"可修改環境變量的值等

 

使用環境變量

1、在定義好環境變量且選擇好環境變量後,我們就可以調用所選擇的環境變量下的變量了,調用格式爲:{{變量名}}

2、在下面例子中切換到生成環境,然後設置請求URL:{{host}}/get。即所請求的url爲:http://postman-echo.com/get

注:在調用變量時,可以根據變量的顏色來判斷變量調用是否正確:正確調用時變量名爲橙色,且選中悔顯示變量詳情

注:
從上面的例子可以看出:不同的測試環境下,請求時不同的

例:

注:
1、一般來說,用戶會將密碼等重要信息保存到變量中,這時候當和其他人分享接口時(只分享接口文件,不分享變量文件),就不用擔心重要信息泄露了,而其他人也可以重建這些變量

2、感覺環境變量也只是針對單個請求的呀,不能同時作用於多個請求,不知道是不是我理解錯了,還希望有大佬解答下。還是說環境變量的使用方法本來就是針對一個請求的:同一個請求(變量名一致、值不一致),通過去選擇不同的環境變量來實現快速在不同環境下請求(不同環境變量中變量名需要保證一致,這樣就可以在切換環境變量時就不需要修改變量名了)

 

 

全局變量

1、全局變量提供了在所有範圍內始終可用的一組變量

2、用戶可以有多個環境變量,但是一次只能激活一個環境變量(選擇一個環境變量爲當前環境變量)。全局變量只有一組,並且它們總是可用的

3、postman 的環境變量可以分組,但是全局變量不能分組,只能有一組全局變量,在設置和使用都類似於環境變量

4、全局變量:是指在所有的環境裏變量值都是一樣的,全局變量的作用域是所有請求

5、全局變量設置有兩種方式: 
    ⑴界面設置
    ⑵腳本設置

 

界面管理全局變量

單擊Postman窗口右上方的"齒輪"圖標,進入環境變量設置界面,然後點擊界面下方的[Globals]按鈕,就會進入全局變量界面,在該界面可以添加、編輯和刪除全局變量。在這裏也可以導入全局變量的JSON文件


查看全局變量

點擊Postman主界面右上方的"眼睛"圖標會顯示環境變量(已選擇了環境變量)和全局變量。在查看環境變量頁面中,點擊[Edit]或當前值後面的"筆"可修改全局變量的值等


使用全局變量

 

腳本設置全局變量

使用腳本可以設置全局變量,如:

pm.globals.set("variable_key","variable_value")

其中variable_key表示變量名,variable_value表示變量值

 

接口關聯

在實際接口測試過程中,接口經常會有關聯。比如需要獲取上一個接口的某個返回值,然後作爲參數傳遞到下一個接口作爲參數

案例:獲取接口A返回的aaa_id值,作爲接口B發送請求的參數
API_A
接口A-請求URL:https://postman-echo.com/post
請求方式:POST
請求參數:自定義aaa_id
(接口A會返回對應的aaa_id值)

API_B
請求B需要使用接口A返回的aaa_id值進行請求URL
請求URL:https://postman-echo.com/get?bbb_id={{global_id}}
請求方式:GET

例子:
步驟1:
發送帶參數的post請求:需要的值會在response中返回

注:
根據以上返回值,需要從中提取aaa_id值,並賦值給全局變量global_id存儲,然後傳遞到接口B中作爲參數發送請求

步驟2:
在【Test】標籤(專門對返回響應數據進行處理的欄目)欄目編寫腳本

步驟3:
構造接口B請求URL:https://postman-echo.com/get?bbb_id={{global_id}}

步驟4:
依次發送請求:【API_A】--->【API_B】

結果:
1、接口B的返回

2、查看Postman Console監控結果

3、查看Postman界面Global變量區域

 

 

 

本地變量(Local Variable)

1、本地變量:主要是針對單個URL請求設置的變量,作用域只是侷限在請求範圍內

2、代碼創建本地變量在Pre-request Script區域添加代碼:pm.variables.set("變量名","變量值");

3、引用本地變量的格式爲:{{變量名}}

例子:get方法使用本地變量

例子:Post方法使用本地變量

獲取變量值

 

 

 

數據變量(Data Variable)

數據變量:通過導入外部數據文件(json/csv/TXT文件),來獲取變量的數據


例子:

步驟1:構建請求(確定好哪部分需要使用變量)


步驟2:在Pre-request Script區域添加代碼


步驟3:準備數據文件

注:
1、文件第一行一定要寫上參數的名稱

2、如果文本中有中文,會顯示亂碼,此時,應該把文件另存爲UTF-8格式的文件


步驟4:打開collection Runner 


步驟5:設置集合運行器

注:上傳本地數據文件後,還需要在"Data File Type"欄中選擇數據文件類型。全部設置好後,點擊[Run]運行集合


步驟6:查看運行結果

 

 

 

Collection變量

對該集合及子文件夾下所有請求生效

例子:
步驟1:進入集合設置頁面


步驟2:設置集合變量


步驟3:發送請求

 

 

拓展

訪問變量通過腳本(scripts)

變量可以被使用在pre-request和test script中。因爲這些部分是通過JavaScript來寫的。你可以以不同的方式初始化和檢索這些變量。可以在腳本中初始化變量,並將它們放在特定的範圍內

1、定義一個變量在腳本中 
在腳本中設置一個變量可以根據變量預定的範圍通過pm.environment.set("variable_key", "variable_value");方法或者pm.globals.set("variable_key", "variable_value");方法,這方法要求提供變量的key和value去設置變量。當你發送請求的時候,這腳本將會執行,值將會保存在變量中

2、取一個預定義的變量
一旦一個變量被設置,你可以使用pm.environment.get("variable_key");或者pm.globals.get("variable_key"); 根據適合的範圍去獲取變量值。這方法要求提供一個變量名作爲參數去檢索儲存的值

3、設置一個變量在作用域中
可以訪問環境變量在相應的環境模板。全局變量可以廣泛的訪問,不管選擇的作用域

4、打印變量 --- Logging variables
經常在腳本中使用變量時,你可能需要看到變量獲取到的值,你可以使用Postman Console去實現的。應用菜單,選擇View然後在選擇Show Postman Console,去打印變量的值。你可以在腳本中使用console.log("domain)";`當你發送請求時,這腳本將會執行,參數對應的值也會打印在Postman Console

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章