上一篇文章詳細的介紹了HTTP Cookie管理器的作用和內容,本篇文章詳細的說明一下使用。
我們使用一個電商專案進行演示,在呼叫登入介面完成登入之後,通過檢視購物車介面獲取該使用者購物車中的資訊。也就是說如果需要檢視到購物車中的資訊,則我們先要是登陸狀態,這樣的情況下,就需要有Cookie資訊的存在了。
提示:要獲取購物車介面中的資訊,需要使用登入後的Cookie保持登入狀態。
1、在HTTP資訊頭管理器元件中新增Cookie資訊
實現步驟:
- 前提我們手動登陸電商網站,地址:
http://www.testingedu.com.cn:8000/index.php/Home/user/login.html
。 - 然後通過工具獲取到登陸後的Cookie資料。
- 把Cookie資料儲存到HTTP資訊頭管理器元件中。
- 直接檢視該使用者的購物車資料。
提示:關於該網站登陸授權的Cookie資訊就是
PHPSESSID
,我們只儲存這一條Cookie即可。
(1)測試計劃內包含的元件
新增元件操作步驟:
- 建立測試計劃。
- 建立執行緒組:
選中“測試計劃”右鍵 —> 新增 —> 執行緒(使用者) —> 執行緒組
。 - 線上程組中新增配置元件"HTTP資訊頭管理器"元件:
選中“執行緒組”右鍵 —> 新增 —> 配置元件 —> HTTP資訊頭管理器
。 - 線上程組裡面新增取樣器“HTTP請求”元件:
選中“執行緒組”右鍵 —> 新增 —> 取樣器 —> HTTP請求
。 - 線上程組裡面新增監聽器“察看結果樹”元件:檢視結果,
選中“執行緒組”右鍵 —> 新增 —> 監聽器 —> 察看結果樹
。
最終測試計劃中的元件如下:
點選執行按鈕,會提示你先儲存該指令碼,指令碼儲存完成後會直接自動執行該指令碼。
(2)請求取樣器內容
如下圖所示:
兩個HTTP請求取樣器的內容是一樣的,只不過有Cookie的請求前加了HTTP資訊頭管理器元件。
(3)HTTP資訊頭管理器內容
我們在請求頭中新增上Cookie資訊,如下圖所示:
當然我們可以用HTTP Cookie管理器元件來替換HTTP資訊頭管理器元件。
如下圖所示:
兩種方式下效果是一樣的,我更喜歡使用HTTP資訊頭管理器元件。
(4)檢視結果
我們現在檢視沒帶Cookie資訊的請求結果,發現返回資料提示看不到購物車的內容。
如下圖所示:
我們再來看一下帶Cookie資訊的請求結果,發現可以看到購物車中的資訊,如下圖所示:
2、使用HTTP Cookie管理器元件來管理Cookie資訊
實現步驟:
- 我們在JMeter中進行登陸操作。
- 通過HTTP Cookie管理器元件來記錄下登陸後的Cookie資訊。
- 再呼叫檢視購物車介面,自動使用HTTP Cookie管理器元件中記錄下來的Cookie資訊。
- 最終實現檢視該使用者的購物車資料。
提示:關於該網站登陸授權的Cookie資訊就是
PHPSESSID
,我們只儲存這一條Cookie即可。
(1)測試計劃內包含的元件
新增元件操作步驟:
- 建立測試計劃。
- 建立執行緒組:
選中“測試計劃”右鍵 —> 新增 —> 執行緒(使用者) —> 執行緒組
。 - 線上程組中新增配置元件"HTTP Cookie管理器"元件:
選中“執行緒組”右鍵 —> 新增 —> 配置元件 —> HTTP Cookie管理器
。 - 線上程組裡面新增取樣器“HTTP請求”元件:
選中“執行緒組”右鍵 —> 新增 —> 取樣器 —> HTTP請求
。(如有多個請求,新增多次) - 線上程組裡面新增監聽器“察看結果樹”元件:檢視結果,
選中“執行緒組”右鍵 —> 新增 —> 監聽器 —> 察看結果樹
。
最終測試計劃中的元件如下:
點選執行按鈕,會提示你先儲存該指令碼,指令碼儲存完成後會直接自動執行該指令碼。
(2)HTTP Cookie管理器內容
什麼都不用填寫,保持原樣即可。
簡單說明一下:
- JMeter中自動收集的Cookie,是不會在HTTP Cookie管理器中進行展示的,但是執行後通過檢視結果樹可以檢視到Cookie資訊,接受到的Cookie會被自動儲存線上程變數中。(使用
Debug Sampler
元件) - HTTP Cookie管理器會自動記錄每一個請求所產生的Cookie,在後邊對同源站點進行的請求中,都可以使用對應的Cookie進行傳送。
(3)HTTP請求元件的內容
1)登陸請求介面內容
填寫好請求地址和請求引數,如下圖所示:
2)檢視購物車請求介面內容
檢視購物車介面,沒有請求引數,我們使用Get請求就可以。其中的Cookie資訊,會自動新增到請求頭資訊中。
如果沒有新增HTTP Cookie管理器元件,則該請求的請求頭資訊中不會帶有Cookie資訊,會顯示[no cookies]
。
(4)檢視結果
指令碼執行結果如下圖所示:
我們可以看到,兩個請求都請求成功了。登陸請求中是沒有Cookie資訊的,登陸之後服務端會返回Cookie資訊給客戶端。而HTTP Cookie管理器元件儲存了這些Cookie資訊,並應用於之後的介面請求中,所以在檢視購物車請求中,我們看到了Cookie資料。
3、檢視HTTP Cookie管理器元件中自動儲存的Cookie資訊
前面我們說過,JMeter中自動收集的Cookie資訊,是不會在HTTP Cookie管理器中進行展示,接受到的Cookie資訊會被自動儲存線上程變數中。
如果我們需要檢視或引用這些Cookie資訊怎麼辦?
(1)修改JMeter.property
檔案
修改jmeter/bin/jmeter.properties
檔案,把CookieManager.save.cookies
屬性開啟,意思是儲存Cookie資料到執行緒變數中。
操作如下:
CookieManager.save.cookies=true # 取消註釋,false修改成true
(2)新增Debug Sampler
取樣器
新增Debug Sampler
元件:選中“執行緒組”右鍵 —> 新增 —> 取樣器 —> Debug Sampler
。
我們以上面練習為例,新增完Debug Sampler
元件後,測試計劃中的元件如下:
(3)檢視Debug Sampler
元件中的結果
執行測試計劃,然後在察看結果樹中,檢視Debug Sampler
元件中的值。
如下圖所示:
紅框中的內容,就是登陸請求後,服務端返回給客戶端的Cookie資訊。
之後我們可以使用${COOKIE_名稱}
的方式,在其他的地方引用該Cookie資訊。
JMeter.property
檔案中的CookieManager.name.prefix=
屬性,能夠用來修改預設的變數名COOKIE_
的開頭。