beanshell练习 ---导入外部jar包
步骤:
1.Eclipse下准备好测试类 ,如下
package test;
public class TestBeanShell {
public static String testHello(String username, String password) {
if (!username.equals("clover")) {
return "用户名错误";
} else if (!password.equals("456")) {
return "密码错误";
} else {
return "恭喜你,登陆成功!";
}
}
}
2.导出jar包,右键-export-JAR-test.jar
==============================Jmeter 相关========================================
3.将导出的jar包放在jmeter的libext下: E:WorkSpaceJmeterapache-jmeter-4.0libext

4.打开jmeter,在测试计划里边引入test.jar

5.新增用户定义的变量 : 新增变量 user :clover pass :123456
6.添加beanshell sample: 线程组-右键添加-beanshell sample
7.编写beanshell 代码 获取用户名和密码,并传递给提前封装好的类,最后返回登录后的结果
import test.*; //静态方法打点调用 不需要实例化 // 注意分号 注意分号 注意分号 a = vars.get("user"); b = vars.get("pass"); String c = TestBeanShell.testHello(a,b); log.info(c);
8.新增查看结果数,用来查看beanshell sample 请求是否正确
9.运行成功

以上jmx的元件 如上图。
总结及与遇到的问题
1.beanshell 中写的代码 没加分号; 导致一直报错=============对JAVA语法不熟
2.beanshell 常用功能
- vars.get("user") 获取变量值 如上面的用户定义的变量 user ,想要得到user 对应的值clover ,就这样使用:vars.get("user") 结果是clover
- vars.put("v1","${user}") ${user} 的结果是clover , 这句话就是将clover赋给v1 即 v1="clover"
- log.info("==========") 打印日志
3.以下三种种方式都可以取到用户名和密码的值
//String result = TestBeanShell.testHello("${user}", "${pass}");
//vars.put("v1",bsh.args[0]) vars.put("v1",bsh.args[1]); 在beanshhell 定义变量的时候要用空格隔开 ${user} ${pass} 空格隔开空格隔开空格隔开
//vars.ger("user") vars.get("pass")
4.进阶版
import test.*
vars.put("v1","${user}"); vars.put("v2","${pass}"); vars.put("v3",Parameters); String result = TestBeanShell.testHello(vars.get("v1"), vars.get("v2")); log.info(result); String name = vars.get("v1"); String pass = vars.get("v2"); String params = vars.get("v3"); log.info("输入用户名=" + name); log.info("输入密码=" + pass); log.info("params=" + params); //log.info("bsh.args="+ Arrays.toString(bsh.args)); int bshArgs = bsh.args.length; log.info("bsh.args数组长度="+Integer.toString(bshArgs)); for(int i = 0 ; i< bshArgs ; i++){ log.info("bsh.args第"+i+"个元素=" + bsh.args[i]); }
5.多实践多实践多实践!!!