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():获取采样器山下文数据。

这里以数据库结果与接口响应结果做对比验证这个场景来举例:

  1. 定义jdbc连接串

  2. jdbc请求

  3. 提取接口返回参数

  4. BeanShell后置处理器使用demo

  5. 使用BeanShell断言数据库数据及接口返回数据校验

    我们将数据库查出来的结果的别名定义为resList。大家知道,数据库的查询结果数据类型为List<Map<String,Object>>,故在beanshell处理器中,我们可以使用这样的方式,在代码中获取到这个结果中的username字段。

    String username = vars.getObject("resList").get(0).get("username");
    
  6. 查看结果

  7. 现在我们看一下beanshell控制器打印的日志信息

注意:
beanshell处理器分前置处理器,后置处理器以及断言,前置处理器只在请求前生效,后置处理器,断言只在请求后生效。

参考:
https://blog.csdn.net/weixin_50829653/article/details/117482501

posted @   扬帆去远航  阅读(463)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示