JMETER Beanshell

jsonBeanshell的内置变量和方法:

Beanshell有一些默认的内置变量和方法,用户可以通过这些变量与JMeter进行交互
prInt:非GUI模式下打印信息(输出信息到stdout,标准输出控制台)
log:输出信息到日志(文件)
        log.debu(“调试信息”)
        log.info(“响应状态码” + ResponseCode)
        log.warn(“警告信息”)
        log.error(“出错信息”)

ResponseCode:响应状态码(String类型)。
ResponseHeaders:响应头(String类型)。
prev:获取当前请求结果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():获取采样器山下文数据

JMeterContext API地址

将线程下的局部变量变成全局变量方便其他线程使用,通过beanshell脚本操作步骤:
1、增加beanshell后置,,paramteters参数框写上需要传递的参数${code},如果是多个参数,需要用空格隔开
在beanshell脚本中获取这些参数:
获取传递给beanshell的参数,单个,多个的情况:
String plant = bsh.args[0];【单个】
String sn = bsh.args[2];【多个】
String vin = bsh.args[1];
1获取参数,并拼接【如果需要】
String plant_no = "沪B"+vars.get("plant_no");
2将拼接好的参数传递给局部变量【可有可无,视情况而定】
vars.put("plant_no",plant_no);
3将拼接好的参数传递给全局变量plant
props.put("plant",plant_no);
4将线程组的参数传递给[如果使用2需用如下语句传递给全局变量]
props.put("plant",vars.get("plant_no"));

sn和vin的处理:
props.put("sn",vars.get("sn_no"));
log.info("sn           "+sn);

String vin_no = "vin" + vars.get("vin_no");
props.put("vin",vars.get("vin_no"));

最后在别的线程组调用变量使用${__P(plant,)}或者可以使用property函数

遇到需要判断响应结果是否为自己所需要,而json和context断言无法测试的时候,需要使用beanshell断言

场景:BeanShell断言中可以通过ResponseCode、ResponseHeaders及pre.getResponseDataAsString()来分别获得String格式的响应状态码、响应头、响应体数据。结合if判断,通过变量Failure=false或Failure=true来设置断言是否通过。当设置Failure=true时,还可以设置FailureMessage来设置失败原因。

需求:目前有这样一响应,判断轨迹是否存在,如果lon不存在,那么响应结果是"data":{"driveLocus":null},如果lon存在,则响应结果是"data":{"driveLocus":[{"lon":"xxxx","lat":"xxxx"},{"lon":"xxxx","lat":"xxxx"}]},判断轨迹是否出现

先获取响应内容$.data.driveLocus[*].lon,赋值变量lon,在beanshell断言中,传参${lon},在脚本中判断字段${lon},断言脚本判断响应lon内容是否存在,:

if (bsh.args.length==0){   //判断传参是否为空,为空,断言失败
    Failure=true;
    FailureMessage = "经度获取null";
    }else{
    String lon = bsh.args[0];
    if (lon!=null){   //判断lon的内容是否为空,不为空,断言成功,为空,断言失败
    Failure=true;
    }else{
    Failure=true;
    FailureMessage = "经度获取null";
    }
}

json 后置提取器,提取多变量使用分号分隔,如图所示:

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
JMeter是一款功能强大的负载测试工具,而Beanshell则是JMeter中一个非常重要的组成部分。Beanshell是一个基于Java语言的脚本语言,它允许你在JMeter中使用Java代码来进行各种操作,包括读取文件、发送邮件、执行数据库操作等等。 以下是JMeter Beanshell的安装使用步骤: 1. 下载Beanshell 在官网下载最新的Beanshell版本,解压到任意目录。 2. 将Beanshell添加到JMeter的classpath中 打开JMeter的bin目录下的jmeter.bat(Windows)或jmeter.sh(Linux),找到如下代码: set CLASSPATH=%CLASSPATH%;%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar 将其修改为: set CLASSPATH=%CLASSPATH%;%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%BEANSHELL_HOME%\bsh-2.0b4.jar 其中,BEANSHELL_HOME为Beanshell的安装目录。 3. 在JMeter中使用BeanshellJMeter中使用Beanshell非常简单。只需要添加一个Beanshell Sampler,然后在Sampler中编写Beanshell脚本即可。 例如,以下是一个简单的Beanshell脚本,用于输出当前时间: import java.text.SimpleDateFormat; import java.util.Date; SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String currentTime = format.format(new Date()); log.info("Current time is " + currentTime); 在Sampler中选择Beanshell Sampler,然后将以上脚本复制到Script框中即可。运行测试计划后,可以在JMeter的日志中看到输出的当前时间。 总结 JMeter BeanshellJMeter中非常重要的组成部分,它可以让你在测试中使用Java代码来进行各种操作。安装和使用Beanshell非常简单,只需要下载Beanshell,将其添加到JMeter的classpath中,然后在Sampler中编写Beanshell脚本即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值