最近使用jmeter測試接口並發,所測接口需要登錄后才可執行,開始嘗試把登錄和接口執行寫到一個線程組中,但是發現在並發執行時,單點登錄容易報錯,故改成登錄單獨線程組。分線程組后,由於cookie管理器所存的cookie只能在同一線程組共享,不同組無法共享,需要進行cookie的傳遞,特將傳遞方法記錄如下:
1. 取出登錄線程組的cookie
- 首先更改jmeter.properties配置文件中CookieManager.save.cookies=true(注意更改后,將前面的’#’去掉),然后重啟jmeter,
- 在登錄線程組中,添加cookie管理器
- 接下來,添加 BeanShell Sampler 或 BeanShell PostProcessor ,使用COOKIE_para(para代表cookie中參數名,如cookie中寫jsessionid=sju1d3e3ad322,則用COOKIE_jsessionid來取jsessionid的值)來取出cookie信息。
2. 設置cookie值為jmeter property,以供全局調用
- 在 BeanShell Sampler 或 BeanShell PostProcessor中,使用${__setproperty(jid,jsessionid.false)}設置全部屬性
3. 在並發執行線程組,獲取cookie執行
- 在接口頭信息中,設置cookie字段,值為jsessionid={__P(jid)}(如識別內容放在請求中的,直接拼接到URL中)