Jmeter 接口測試過程中,我們會遇到登錄token 的問題。
如果我們要使用同一個賬號登錄,然后對其他接口進行並發測試。
那么這個時候問題來了,我們怎樣在所有線程中使用同一個token?
Jmeter 的僅一次控制器,僅對同一個線程有效,如果有多個線程,那么還是要登錄多次,產生不同的token。
這些token 中只有一個是有效的,那么其他的就肯定失敗了。
之前每次使用都是現把token全改一遍,特別麻煩,經過百度和自己實踐發現了兩種方式可以跨線程使用同一token。
方法一:
(1)正則提取TOKEN
(2)添加后置后置處理器—>BEANSHELL POSTPROCESSOR,使用__SETPROPERTY函數設置JMETER屬性值(此值為全局變量值),將所需變量值如${TOKEN} 設置為JMETER屬性值,即NEWTOKEN,示例:
方法:
String token = bsh.args[0]; print(token); ${_setProperty(newtoken,${token},)}
- 1
- 2
- 3
(3)在線程組2中使用_P函數來調用JMETER屬性,獲取屬性值,從而實現跨線程組,參數值傳遞,我的直接寫入信息頭管理器。
方法:${__P(newtoken,)}
(4)查看運行結果是否調取成功
方法二:
把登錄模塊放到一個線程里面(這個線程組設置只運行一次),然后獲取token,把這個token 保存到一個全局變量里面${__setProperty(key,${val},)}
,其他線程組也可以訪問到${__property(key)}。
(1)登錄模塊里面獲取TOKEN
(2)添加一個 BEAN SHELL SAMPLER, 里面設置全局變量,使用${__SETPROPERTY(TOKEN,${TOKEN},)}
的格式
(3)在另外一個線程組中引用:
這個時候,無論你有多少個線程,使用的全部都是同一個賬號的token了