JMeter自定义函数传递两个变量失败问题求助
解决JMeter自定义BeanShell函数传递多个参数的问题
嘿,我来帮你搞定这个问题!你遇到的核心问题是在__BeanShell函数里引用JMeter变量的方式不对,而且其实在BeanShell断言里完全不用绕这个弯子,直接调用函数更简单。
我给你拆解几个可行的解决方案:
方案1:修正__BeanShell函数的调用语法
如果你一定要用__BeanShell函数来调用自定义方法,不能直接写变量名,得用JMeter内置的vars对象来获取变量值。把你的调用代码改成这样:
${__BeanShell(printStr2(vars.get("Username"), vars.get("Password")))}
这里的vars是JMeter提供的线程变量容器,vars.get("变量名")能正确拿到你在BeanShell断言里定义的Username和Password的值,传递给自定义函数。
方案2:直接在BeanShell断言里调用函数(更推荐)
既然你已经在BeanShell断言里写代码了,完全没必要用__BeanShell函数包裹。因为BeanShell断言本身就是运行BeanShell代码的环境,你在BeanShellFunction.bshrc里定义的函数已经被自动加载进来了,直接调用就行:
String Username = "ABC"; String Password ="XXX"; printStr2(Username, Password); // 直接调用自定义函数,一步到位
这种写法更直观,也不容易出现语法解析错误。
额外检查项
- 确保你的
BeanShellFunction.bshrc文件放在JMeter的bin目录下,JMeter启动时会自动加载这个文件里的自定义函数。 - 自定义函数的定义可以补个返回值类型(虽然你这里是打印操作,不影响,但更规范):
void printStr2(String str1, String str2) { System.out.println(str1); System.out.println(str2); }
试试上面的方法,应该就能正常传递两个参数并执行函数了!
内容的提问来源于stack exchange,提问作者Ghost
相关产品推荐
相关产品推荐

