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 后置提取器,提取多变量使用分号分隔,如图所示:

JMETER Beanshell相关推荐

  1. Jmeter BeanShell使用json.jar包处理Json数据

    1.环境准备 1)  Jmeter.JDK 2) 将json.jar包置于..\lib\下 json包下载地址:https://mvnrepository.com/ (国内的maven地址) 可以参考 ...

  2. jmeter——BeanShell 预处理程序

    jmeter--BeanShell 预处理程序 一.BeanShell 预处理程序描述和作用 二.BeanShell 预处理程序的使用 三.BeanShell 预处理程序的注意事项 四.BeanShe ...

  3. 【干货】JMeter BeanShell 应用

    视频汇总首页:http://edu.51cto.com/lecturer/index/user_id-4626073.html 不废话直接上场景 场景1:业务单据参数化时要生成一组(多个时间,比如订单 ...

  4. (jmeter内置可调用的变量)jmeter beanShell断言

    用户可以在jmeter- "beanShell断言"中自定义断言.自由灵活的用脚本实现自己的断言   beanShell断言接口介绍   在beanShell中直接可以调用的变量, ...

  5. Jmeter BeanShell采样器提取接口响应并传递(三)

    1.将fastjson-1.2.68.jar放置C:\jmeter\apache-jmeter-5.0\lib路径下 2.CSV 数据文件设置多个手机号 3.添加登录接口,${mobile}调用2种的 ...

  6. Jmeter BeanShell取样器操作变量(一)

    vars: 引用Jmeter线程的局部变量,将 局部变量 改为  全局变量 亦可达到引用全局变量的效果, 连通Jmeter 和 beanshell string user = vars.get(&qu ...

  7. Jmeter beanshell语法

    beanshell介绍 BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法; BeanShell是一种松散类型的脚本语言(这点和JS类似); BeanShell ...

  8. JMeter BeanShell 应用

    不废话直接上场景 场景1:业务单据参数化时要生成一组(多个时间,比如订单日期,发货日期等)未来的时间,运用JMeter提供的时间函数并不能较好的完成 场景2:测试Java接口,确又不想继承Abstra ...

  9. 性能篇 | 17 | jmeter | BeanShell内置变量prev的使用技巧

    1 prev简介 BeanShell 有的内置变量,JSR223 也会有对应的变量: prev 提供对当前取样器结果的访问能力 prev 映射:org.apache.jmeter.samplers 的 ...

  10. 性能篇 | 17 | jmeter | BeanShell内置变量vars的使用技巧

    1 简介 BeanShell 有的内置变量,JSR223 也会有对应的变量 vars 是最常用的JMeter变量之一 在 JMeter 内部,映射org.apache.jmeter.threads 的 ...

最新文章

  1. 阿里三面被挂,幸获内推,历经5轮终于拿到口碑offer
  2. solr索引服务器的配置和solrj集成开发总结
  3. 队列的链式存储和实现(C语言)【队列】(8)
  4. python3.5安装scrapy_Python3.5下安装测试Scrapy
  5. 【最全最详细】使用publiccms实现动态可维护的导航菜单栏
  6. 1.原生js封装的获取某一天是当年的第几周方法
  7. VMware 安装版中 安装VMware tools 图解
  8. 修改 JSON 对象的值
  9. Java -- AWT 画图,图像处理
  10. 华为scp快充协议详解_1A1C多协议快充,倍思30W PD PPS双口充电器(BS-CH905)评测...
  11. linphone android下载,Linphone | F-Droid - Free and Open Source Android App Repository
  12. SSD目标检测流程深入理解
  13. STC8A8K64D4 EEPROM读写失败
  14. 双十一特辑:Python采集商品数据,实时了解商品价格
  15. 用工作流思想实现简单的校园请假系统
  16. 巧用canvas实现画板功能,使用画笔在图片上涂画,橡皮擦可擦除涂画,并保存
  17. 关于 ProgPoW:来自芯片工程师的观点
  18. CentOS7 磁盘重新调整分配
  19. 多方面,全访问的剖析Tomcat十大线程和四大通道
  20. python爬取app播放的视频,Python爬虫工程师必学——App数据抓取实战视频教程

热门文章

  1. .jpg .png .jpeg图片转.eps矢量图的python脚本
  2. python好用的内置库_python内置的高效好用各种库
  3. 在html中生成动态表格数据,JavaScript实现网页动态生成表格
  4. 怎样卸载干净Oracle
  5. 虚拟机器人(巡线竞速)
  6. PMP备考经验分享 制表很重要
  7. Windows读取NXP MiFare Ultralight C类型NFC卡片的信息
  8. vmware 虚拟机恢复ghost镜像文件
  9. windows 文件后缀名
  10. 苹果背后的拼多多双11“农产品狂想曲”