在Jmeter做性能測(cè)試或接口測(cè)試時(shí),當(dāng)多個(gè)請(qǐng)求關(guān)聯(lián)時(shí)需要處理Cookie。
Jmeter對(duì)Cookie進(jìn)行存取的管理可以使用HTTP Cookie管理器組件。以下對(duì)HTTP Cookie管理器的使用進(jìn)行說(shuō)明。
場(chǎng)景:
用戶登錄后,查詢打開某一個(gè)任務(wù)
jmeter 添加線程組并創(chuàng)鍵http請(qǐng)求,沒有添加HTTP Cookie 管理器,執(zhí)行后查看結(jié)果樹,有報(bào)錯(cuò)如下。

選中線程組,添加HTTP Cookie 管理器,添加完成后顯示如下


上述圖中,添加了一個(gè)HTTP Cookie 管理器,對(duì)Cookie進(jìn)操作,新增了一個(gè)JSESSIONID的cookie,具體的值是從變量中取出;另外域、路徑必須要輸入,尤其是域;因?yàn)镴meter現(xiàn)版本默認(rèn)不支持跨域的請(qǐng)求,不填的話設(shè)置的Cookie不會(huì)被帶上。
接下來(lái)就是取Cookie的操作,通常取的Cookie都是從Response Header里取的,取的目的一般都是給另一個(gè)不同的線程來(lái)用,因?yàn)槿绻峭粋€(gè)線程的不同次迭代的情況那么Jmeter會(huì)自動(dòng)帶上,無(wú)需我們?cè)O(shè)置。那么HTTP Cookie管理器是如何工作,如何取出cookie呢?
如果一個(gè) HTTP 請(qǐng)求,返回結(jié)果中包含cookie信息,那么HTTP Cookie管理器會(huì)自動(dòng)將該 cookie 保存起來(lái),后續(xù)所有的對(duì)該網(wǎng)站的請(qǐng)求都使用同一個(gè) cookie。所以 JMeter 的每個(gè)線程都有自己獨(dú)立的"cookie 保存區(qū)域"。這些 cookie 不會(huì)顯示在 HTTP Cookie管理器里,可以通過(guò)察看結(jié)果樹來(lái)對(duì)其進(jìn)行查看。
具體步驟如下:
1、進(jìn)入jmeter的安裝目錄bin目錄下,修改jmeter.properties文件
搜索找到CookieManager.save.cookies=true并設(shè)置為true,并保存
2、重啟jmeter,再次打開jmeter
3、在需要取Cookie的線程組里添加一個(gè)HTTP Cookie 管理器,設(shè)置如上圖
當(dāng)執(zhí)行腳本后,HTTP Cookie 管理器獲取到的cookie就會(huì)被自動(dòng)保存在變量里(具體的變量名格式為"COOKIE_xxxx","COOKIE_"為前綴),其中xxxx為具體的實(shí)際cookie名;這樣在同一個(gè)線程內(nèi)其它操作組件都是可以直接通過(guò)${COOKIE_xxxx}來(lái)獲取 cookie值。如果不希望這個(gè)前綴可以對(duì)屬性 "CookieManager.name.prefix=" 進(jìn)行定義。
