詳解Jmeter中的BeanShell腳本

在利用jmeter進行接口測試或者性能測試的時候,我們需要處理一些復雜的請求,此時就需要利用beanshell腳本瞭,BeanShell是一種完全符合Java語法規范的腳本語言,並且又擁有自己的一些語法和方法,所以它和java是可以無縫銜接的。beanshell由於內置瞭一些特有的變量,沒法在一些集成代碼工具上去調試。

學瞭Java的一些基本語法後,就可以來在Jmeter中寫寫BeanShell腳本瞭。

直接在線程組下創建一個BeanShell取樣器,然後在腳本區寫java代碼:

寫瞭個循環,執行後在這裡看不到,要在jmeter.bat的windows批處理裡看到:

JMeter在它的BeanShell中內置瞭變量,用戶可以通過這些變量與JMeter進行交互:

1、log:寫入信息到jmeter.log文件,使用方法:log.info(“hahahahahahah”);

2、vars:操作jmeter變量,這個變量實際引用瞭JMeter線程中的局部變量容器(本質上是Map),它是測試用例與BeanShell交互的橋梁,常用方法:

    a) vars.get(String key):從jmeter中獲得變量值

    b) vars.put(String key,String value):數據存到jmeter變量中

添加日志查看:

使用vars:

在線程組2裡面去訪問vars變量,輸出null,可見vars確實是個局部變量:

3、props:操作jmeter屬性,該變量引用瞭JMeter的配置信息,可以獲取Jmeter的屬性,它的使用方法與vars類似,但是隻能put進去String類型的值,而不能是一個對象。對應於java.util.Properties。

props的全局性:

4、prev:獲取前面的sample返回的信息,常用方法:

    a)getResponseDataAsString(): 獲取響應信息;

    b) getResponseCode(): 獲取響應代碼;

先發個接口請求,然後prev獲取返回信息:

自定義函數:使用Java自定義函數來處理特定的邏輯,結合BeanShell的內置對象進行變量的存取,提高腳本的靈活性。

寫瞭個自定義的靜態函數,實現的是整數的累加:

發現報錯,原來是函數的返回值是int類型的,而log.info()裡面要的是String。這裡把int類型的result轉換為string有三種方法:
1、String.valueOf(result)

2、Integer.toString(result)

3、result+””

任選一個即可。

引用外部java文件:在BeanShell中通過source(“代碼路徑”)方法引入Java文件,然後調用方法和java一樣,new一個對象,通過

對象調用裡面的方法。

寫個靜態方法,保存為Test.java文件,放在D盤下:

然後在BeanShell裡引用Test.java,調用函數,傳參100,日志輸出:

引用外部jar包

首先打包:

1、把當前的Test作為運行文件,先運行一遍。

2、右鍵項目名–Export–Runnable JAR file.

3、在Launch找到運行文件,放到jmeter安裝目錄下lib/ext下。

4、在Jmeter的BeanShell裡導包,調用方法。

這裡我運行報錯瞭,說方法找不到,摸索良久後嘗試在測試計劃裡添加一下jar包,結果成功瞭。

到此這篇關於Jmeter中的BeanShell腳本的文章就介紹到這瞭,更多相關Jmeter BeanShell腳本內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: