1.說明
BeanShell:是一個小型嵌入式Java源代碼解釋器,具有對象腳本語言特性,能夠動態地執行標准JAVA語法,並利用在JavaScript和Perl中常見的的松散類型、命令、閉包等通用腳本來對其進行拓展。BeanShell不僅僅可以通過運行其內部的腳本來處理Java應用程序,還可以在運行過程中動態執行你java應用程序執行java代碼。因為BeanShell是用java寫的,運行在同一個虛擬機的應用程序,因此可以自由地引用對象腳本並返回結果。
Jmeter中的BeanShell主要有:定時器BeanShell Timer、前置處理器BeanShell PreProcessor、采樣器BeanShell Sampler、后置處理器BeanShell PostProcessor、斷言BeanShell、斷言監聽器BeanShell Listener。
此處運用了內置對象vars對變量進行存取操作:
·vars.get("name"):從jmeter中獲得變量值
·vars.put("key","value"):數據存到jmeter變量中
(可參考該文檔進行學習:https://www.jianshu.com/p/bc537d6acb3a)
2.直接在jmeter中寫java代碼
第一步:添加 BeanShell Sampler 編寫 java 代碼
線程組(右鍵) => Sampler => BeanShell Sampler(可直接寫入java代碼)
第二步:添加 Debug Sampler 進行調試
控制器 => Sampler => Debug Sampler (調試)
第三步:調用java代碼中的數據
/ep/add.action?NAME=${name}&AGE=${age}
3.導入 java 代碼文件
說明:其中,引入java文件,不需要放到根目錄,只是引用時文件路徑需要使用雙斜杠\\,格式為source("D:\\software\\workspace\\junit-test\\AddMethod.java");
source("D:\\software\\workspace\\junit-test\\AddMethod.java");//導入java文件 int addm = new AddMethod().add(5,8);//調用函數 vars.put("name","duoduo");//保存變量 vars.put("num",addm.toString());//保存變量 return "success"; return num;
Debug Sampler 結果:
name=duoduo
num=13
4.導入 class 文件
addClassPath("D:\\"); import com.AddMethod;//AddMethod是class文件的文件名,放到D盤比較深的一個目錄里 int addm = new AddMethod().add(6,9); vars.put("num",addm.toString()); vars.put("name","kaku"); log.info("test"); return "success"; return num;
Debug Sampler 結果:
name=kaku
num=15
5.jmeter使用自定義編寫java代碼
(可參考該文檔進行學習:https://www.cnblogs.com/linglingyuese/articles/linglingyuese-two.html)
備注:正常情況下,很少會在jmeter中寫java代碼,所以,僅做了解即可