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