詳解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!
推薦閱讀:
- JMeter自定義日志與日志分析的實現
- jmeter執行python腳本的實現示例
- Jmeter測試時遇到的各種亂碼問題及解決
- jmeter下載及安裝配置教程(win10平臺為例)
- 通過Jython調用Python腳本的實現方法