詳解Jmeter中的BeanShell腳本
在利用jmeter進(jìn)行接口測(cè)試或者性能測(cè)試的時(shí)候,我們需要處理一些復(fù)雜的請(qǐng)求,此時(shí)就需要利用beanshell腳本了,BeanShell是一種完全符合Java語(yǔ)法規(guī)范的腳本語(yǔ)言,并且又擁有自己的一些語(yǔ)法和方法,所以它和java是可以無(wú)縫銜接的。beanshell由于內(nèi)置了一些特有的變量,沒(méi)法在一些集成代碼工具上去調(diào)試。
學(xué)了Java的一些基本語(yǔ)法后,就可以來(lái)在Jmeter中寫(xiě)寫(xiě)B(tài)eanShell腳本了。
直接在線程組下創(chuàng)建一個(gè)BeanShell取樣器,然后在腳本區(qū)寫(xiě)java代碼:

寫(xiě)了個(gè)循環(huán),執(zhí)行后在這里看不到,要在jmeter.bat的windows批處理里看到:

JMeter在它的BeanShell中內(nèi)置了變量,用戶可以通過(guò)這些變量與JMeter進(jìn)行交互:
1、log:寫(xiě)入信息到j(luò)meter.log文件,使用方法:log.info(“hahahahahahah”);
2、vars:操作jmeter變量,這個(gè)變量實(shí)際引用了JMeter線程中的局部變量容器(本質(zhì)上是Map),它是測(cè)試用例與BeanShell交互的橋梁,常用方法:
a) vars.get(String key):從jmeter中獲得變量值
b) vars.put(String key,String value):數(shù)據(jù)存到j(luò)meter變量中
添加日志查看:

使用vars:

在線程組2里面去訪問(wèn)vars變量,輸出null,可見(jiàn)vars確實(shí)是個(gè)局部變量:

3、props:操作jmeter屬性,該變量引用了JMeter的配置信息,可以獲取Jmeter的屬性,它的使用方法與vars類似,但是只能put進(jìn)去String類型的值,而不能是一個(gè)對(duì)象。對(duì)應(yīng)于java.util.Properties。
props的全局性:

4、prev:獲取前面的sample返回的信息,常用方法:
a)getResponseDataAsString(): 獲取響應(yīng)信息;
b) getResponseCode(): 獲取響應(yīng)代碼;
先發(fā)個(gè)接口請(qǐng)求,然后prev獲取返回信息:

自定義函數(shù):使用Java自定義函數(shù)來(lái)處理特定的邏輯,結(jié)合BeanShell的內(nèi)置對(duì)象進(jìn)行變量的存取,提高腳本的靈活性。
寫(xiě)了個(gè)自定義的靜態(tài)函數(shù),實(shí)現(xiàn)的是整數(shù)的累加:

發(fā)現(xiàn)報(bào)錯(cuò),原來(lái)是函數(shù)的返回值是int類型的,而log.info()里面要的是String。這里把int類型的result轉(zhuǎn)換為string有三種方法:
1、String.valueOf(result)
2、Integer.toString(result)
3、result+""
任選一個(gè)即可。

引用外部java文件:在BeanShell中通過(guò)source("代碼路徑")方法引入Java文件,然后調(diào)用方法和java一樣,new一個(gè)對(duì)象,通過(guò)
對(duì)象調(diào)用里面的方法。
寫(xiě)個(gè)靜態(tài)方法,保存為T(mén)est.java文件,放在D盤(pán)下:

然后在BeanShell里引用Test.java,調(diào)用函數(shù),傳參100,日志輸出:

引用外部jar包
首先打包:
1、把當(dāng)前的Test作為運(yùn)行文件,先運(yùn)行一遍。

2、右鍵項(xiàng)目名--Export--Runnable JAR file.

3、在Launch找到運(yùn)行文件,放到j(luò)meter安裝目錄下lib/ext下。

4、在Jmeter的BeanShell里導(dǎo)包,調(diào)用方法。

這里我運(yùn)行報(bào)錯(cuò)了,說(shuō)方法找不到,摸索良久后嘗試在測(cè)試計(jì)劃里添加一下jar包,結(jié)果成功了。


到此這篇關(guān)于Jmeter中的BeanShell腳本的文章就介紹到這了,更多相關(guān)Jmeter BeanShell腳本內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot基于SpringSecurity表單登錄和權(quán)限驗(yàn)證的示例
這篇文章主要介紹了SpringBoot基于SpringSecurity表單登錄和權(quán)限驗(yàn)證的示例。文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Spring中@Validated和@Valid區(qū)別淺析
@Valid是javax.validation里的,?@Validated是@Valid?的一次封裝,是Spring提供的校驗(yàn)機(jī)制使用,下面這篇文章主要給大家介紹了關(guān)于Spring中@Validated和@Valid區(qū)別的相關(guān)資料,需要的朋友可以參考下2022-04-04
解決配置Feign時(shí)報(bào)錯(cuò)PathVariable annotation was empty
在配置Feign客戶端時(shí),如果遇到`@PathVariable`注解為空的問(wèn)題,是因?yàn)樵诼暶鹘涌诜椒〞r(shí)沒(méi)有為`@PathVariable`注解提供`value`屬性,解決方法是為`@PathVariable`注解添加`value`屬性,這樣就可以避免報(bào)錯(cuò),并成功啟動(dòng)Feign客戶端2024-11-11
SpringBoot服務(wù)開(kāi)啟后通過(guò)端口訪問(wèn)無(wú)反應(yīng)的解決
這篇文章主要介紹了SpringBoot服務(wù)開(kāi)啟后通過(guò)端口訪問(wèn)無(wú)反應(yīng)的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10
SpringMVC如何訪問(wèn)WEB-INF jsp過(guò)程解析
這篇文章主要介紹了SpringMVC如何訪問(wèn)WEB-INF jsp過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
win10 下 idea2020安裝 JetBrains-agent.jar 包后閃退的問(wèn)題及解決辦法
這篇文章主要介紹了win10 下 idea2020安裝 JetBrains-agent.jar 包后閃退的解決辦法,本文給大家?guī)?lái)原因分析及解決方法,需要的朋友可以參考下2020-08-08
SSH框架網(wǎng)上商城項(xiàng)目第27戰(zhàn)之申請(qǐng)域名空間和項(xiàng)目部署及發(fā)布
這篇文章主要為大家詳細(xì)介紹了SSH框架網(wǎng)上商城項(xiàng)目第26戰(zhàn)之申請(qǐng)域名空間和項(xiàng)目部署及發(fā)布,感興趣的小伙伴們可以參考一下2016-06-06

