【轉】jmeter如何設置登錄接口只調用一次以及遇到的問題:cookie參數放在消息頭headers里面


本文轉自https://www.cnblogs.com/yiyaxuan/p/12672281.html

需求前提:
我想壓測獲取產品列表這個接口,但是這個接口依附於sessionid,所以我必須先登錄成功,拿到登錄接口,但是我只想實現壓測獲取產品列表這個接口,所以登錄沒必要登錄多次,只需要登錄一次就行。

所以Jmeter如何設置登錄接口只調用一次開始實施。

 

解決方法:

方法一.用同一個線程組,用僅一次控制器

是用同一線程組實現的,線程數那里只能設置次數=1,循環次數設置為n次,滿足登錄只請求1次,獲取產品列表接口可以請求n次。

缺點就是線程數那里只能設置1次。

 

方法二. 跨線程去做,把登錄接口單獨放在setUp線程組里面,然后向下一個線程組Thread group傳參

沒缺點!推薦使用方法二,雖然剛開始實施花費了將近2小時

 

 

第一步用寫死的session去調試,調試成功,再去做跨線程 

 

 

 


方法一. 用僅一次控制器

實現思路:
1.登錄接口放在僅一次控制器里面

添加邊界提取器或者正則提取器,還有調試后置處理程序即debug PostProcessor,把Cookie的value:SESSIONID=XXXXXX

然后這個Cookie放在headers里面

把XXXX從登錄接口的響應結果里面提取出來,賦給某個變量A

 

2.獲取產品列表的接口

headers里面添加

Cookie    ${變量A}

 

a.cookie放在cookie管理器里面,不放在headers

 

 

 

 

 

 

b.cookie放在header管理里面,放在headers

 

 

 

 

 

 

 

 

 

 

 

方法二. 可以把登錄接口單獨放在一個線程組里面,然后向下傳參

 

實現思路:
1.新增setup線程組,添加登錄接口

 

 

 

登錄接口下面:

-》添加邊界提取器

-》添加信息頭管理器

-》添加Beanshell 后置處理程序即BeanShell PostProcessor,使用setProperty的函數,然后在下個線程里的header里增加這個sessionid:
${__setProperty(new_sessionid,${sessionid},false)}

-》添加調試后置處理即debug PostProcessor,用來看登錄接口是否取值成功

 

 

 

 

2. 新增線程組,放獲取產品列表的接口

產品列表接口下面:
-》添加信息頭

 

 

Cookie  SESSIONID=${__P(new_sessionid)}

 

 

 

 

 

 

 

 

 

 

 

 

 

另外
-》添加Beanshell 后置處理程序即BeanShell PostProcessor,使用setProperty的函數,然后在下個線程里的header里增加這個sessionid:
${__setProperty(new_sessionid,${sessionid},false)}

BeanShell PostProcessor也可以用beanshell 斷言來做,即添加benshell斷言將正則截取token和用戶userid保存下,,效果是一樣的!

${__setProperty(new_token,${token},false)}
${__setProperty(new_uid,${uid},false)}

 

 

 

 ${__P(new_token)}

 ${__P(new_sessionid)}

cookie參數放在消息頭里面 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM