Jmeter之Bean shell使用(四)——跨线程组之间的全局参数传递
使用場景:
請求API需要授權令牌,但是授權令牌只需要獲取一次,即可調用服務器上其他業務接口。
所以我想要把授權操作放在單獨的一個線程,業務流放在其他線程。
這就需要我把從授權線程獲取的令牌傳入業務流線程。
?
解決方法———后置處理器Beanshell PostProcessor
1、首先選擇“獲取token”線程組:添加正則表達式,提取出token的值(不會使用正則表達式的同學請查閱博主之前Jmeter相關文章)
2、在“獲取token”線程組:添加后置處理器BeanShell PostProcessor
Parameters:引用正則表達式提取的變量${token}
Script:具體beanshell語法大家可去查看相關資料,這里很簡單,一條語句就搞定。
意思是把獲取的變量${token}設置為全局變量,并以新的名字newtoken來進行引用。
3、在“業務流”線程組引用全局變量newtoken
引用方式是${__P(newtoken,)},注意花括號中是兩個下劃線,newtoken后還跟一個逗號,不要寫漏了。
?
至于我在這個線程組里面加的固定定時器,是因為如果不加定時器,兩個線程是同步執行的,會發生token值還沒有獲取到就進行業務流的接口請求,造成請求返回失敗。
4、執行,查看結果
獲取到的token值為上圖所示
?
?
函數__setProperty用來設置JMeter屬性的值,屬性對于JMeter是全局的,因此可以被用來在跨線程組之間通信。
屬性不同于變量,變量作用于一個線程組內,屬性通常作用于所有線程組,而且需要使用__P或者__property函數來進行引用。
這個屬性的引用方式是規定的~在官網上有說明,你可以通過這個連接查看這部分的原文文檔:http://jmeter.apache.org/usermanual/functions.html
轉載于:https://www.cnblogs.com/hjianhui/p/9991421.html
總結
以上是生活随笔為你收集整理的Jmeter之Bean shell使用(四)——跨线程组之间的全局参数传递的全部內容,希望文章能夠幫你解決所遇到的問題。