Jmeter之BeanShell(三)
BeanShell使用
BeanShell是一种完全符合java语法规范的脚本语言,也就是java源代码解释器
有如下几种BeanShell
- 定时器
- BeanShell取样器
BeanShell取样器
调用Java方法有三种:
第一种:jar 包
步骤如下:
- 在 idea 工具里面调试好算法
- 打 jar 包 (待学习)
- 在 jmeter 里面引入jar包
- 在 BeanShell 里面写好算法,进行调用
import testmd5.MD5
String newpwd = '123456';
MD5 getMD5 = new MD5();
String res = getMd5.GetMD5Code(newpwd);
vars.put("resnewpwd", res); // vars 用来设置变量方便后面引用;put 将数据保存到 jmeter 变量中,把 res 保存到 resnewpwd中
System.out.println(res);
第二种:引入 java 源文件
示例:
source(" java文件路径") // 其中java文件路径可以使用绝对路径,也可以使用相对路径
source("D:\workspace\jmeter\src\jmeter\RsaUtil.java");
或者
source("RsaUtil.java"); //文件位于jmeter bin目录下
String password= RsaUtil.encrpty("keeplovejava");
调用 class 文件
语法:
addClassPath("class文件所在目录");
import 类名;
示例:
addClassPath("D:"); //可以是父级目录或者祖先级目录
import com.RsaUtil;
String password= RsaUtil.encrpty("keeplovejava");
//引入class文件的path路径跟引入java文件不同,对比如下:
source("D:\workspace\jemter\src\jmeter\RsaUtil.java"); //使用绝对路径时必须要指定文件的完整路径。
addClassPath("D:"); //class文件只要在D盘中就可以,不一定在D盘根目录中,不用指定完整路径。
BeanShell常用变量
- log :用于打印日志
log.info("This is log info!");
- vars: 对变量进行读写操作
vars.get(key); //获取变量值
vars.put(key, val); //给变量赋值
vars.putObject(“user”,new UserDto());
- prev:获取前面sampler返回的信息
prev.getResponseDataAsString():获取响应信息
prev.getResponseCode():获取响应code
BeanShell断言
内置变量
Failure:是否失败,boolean类型
FailureMessage:失败日志,在断言失败时显示
int iStock = Integer.parseInt(vars.get("p_stock"));
if (iStock > 1500){
Failure = true;
FailureMessage = "库存数量超过了1500";
// ResponseData是服务器返回的byte[]类型的数据
// 如果想打印,必须转换为String类型的,用new String(ResponseData)
log.info(new String(ResponseData));
//打印当前请求的url, SamplerData是String类型的数据
log.info(SamplerData);
}
BeanShell写数据到文件
需求
1、调用登录接口,获取token值 2、将token值保存到一个文件里
String line = vars.get("num")+","+vars.get("token");
try {
BufferedWriter writer = new BufferedWriter(new FileWriter("/Users/***/Desktop/output.txt",true));
writer.write(line);
writer.newLine();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)