jmeter-BeanShell处理器
由于jmeter是基于java的,所以,为了处理一些复杂场景,jmeter提供了各类beanshell处理器,允许用户直接在jmeter中编写java代码,去实现一些功能。下面列举一些Beanshell的内置变量和方法。
- log:输出信息到日志(文件)
log.debug(“调试信息”)
log.info(“响应状态码” + ResponseCode)
log.warn(“警告信息”)
log.error(“出错信息”) - prev:获取当前请求结果
prev.getResponseDataAsString():获取响应体数据(String类型)。
prev.getResponseCode():获取状态码(同ResponseCode,String类型)。 - vars:操作JMeter变量
String var1 = vars.get(“变量名”):获取变量的值(假设为String类型)。
vars.put(“变量名”, 变量值):设置变量值。 - props:操作JMeter属性
props.get(String,String) 可以获取JMeter中已经生成的属性。
props.put(String,String)可以创建和更新JMeter属性。 - ctx:获取当前线程上下文数据(可获取所有信息)
ctx.getVariables(“变量名”):获取变量值(同vars.get())。
ctx.setVariables(“变量名”, “变量值”):设置变量(同vars.put())。
ctx.getProperties(“属性名”):获取属性值(同props.get())。
ctx.setProperties(“属性名”,“属性值”):设置属性(同props.put())。
ctx.getPreviousResult():获取当前请求结果同(prev)。
ctx.getCurrentSampler():获取当前采样器。
ctx.getPreviousSampler():获取前一采样器。
ctx.getThreadNum():获取线程数。
ctx.getThreadGroup():获取线程组。
ctx. getThread():获取当前线程。
ctx.getEngine():获取引擎。
ctx.isSamplingStarted():判断采样器是否启动。
ctx.isRecording():判断是否开启录制。
ctx.getSamplerContext():获取采样器山下文数据。
这里以数据库结果与接口响应结果做对比验证这个场景来举例:
-
定义jdbc连接串
-
jdbc请求
-
提取接口返回参数
-
BeanShell后置处理器使用demo
-
使用BeanShell断言数据库数据及接口返回数据校验
我们将数据库查出来的结果的别名定义为resList。大家知道,数据库的查询结果数据类型为List<Map<String,Object>>,故在beanshell处理器中,我们可以使用这样的方式,在代码中获取到这个结果中的username字段。
String username = vars.getObject("resList").get(0).get("username");
-
查看结果
-
现在我们看一下beanshell控制器打印的日志信息
注意:
beanshell处理器分前置处理器,后置处理器以及断言,前置处理器只在请求前生效,后置处理器,断言只在请求后生效。
参考:
https://blog.csdn.net/weixin_50829653/article/details/117482501
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?