上一篇文章詳細的介紹了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_
的開頭。