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 后置提取器,提取多变量使用分号分隔,如图所示:
JMETER Beanshell相关推荐
- Jmeter BeanShell使用json.jar包处理Json数据
1.环境准备 1) Jmeter.JDK 2) 将json.jar包置于..\lib\下 json包下载地址:https://mvnrepository.com/ (国内的maven地址) 可以参考 ...
- jmeter——BeanShell 预处理程序
jmeter--BeanShell 预处理程序 一.BeanShell 预处理程序描述和作用 二.BeanShell 预处理程序的使用 三.BeanShell 预处理程序的注意事项 四.BeanShe ...
- 【干货】JMeter BeanShell 应用
视频汇总首页:http://edu.51cto.com/lecturer/index/user_id-4626073.html 不废话直接上场景 场景1:业务单据参数化时要生成一组(多个时间,比如订单 ...
- (jmeter内置可调用的变量)jmeter beanShell断言
用户可以在jmeter- "beanShell断言"中自定义断言.自由灵活的用脚本实现自己的断言 beanShell断言接口介绍 在beanShell中直接可以调用的变量, ...
- Jmeter BeanShell采样器提取接口响应并传递(三)
1.将fastjson-1.2.68.jar放置C:\jmeter\apache-jmeter-5.0\lib路径下 2.CSV 数据文件设置多个手机号 3.添加登录接口,${mobile}调用2种的 ...
- Jmeter BeanShell取样器操作变量(一)
vars: 引用Jmeter线程的局部变量,将 局部变量 改为 全局变量 亦可达到引用全局变量的效果, 连通Jmeter 和 beanshell string user = vars.get(&qu ...
- Jmeter beanshell语法
beanshell介绍 BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法; BeanShell是一种松散类型的脚本语言(这点和JS类似); BeanShell ...
- JMeter BeanShell 应用
不废话直接上场景 场景1:业务单据参数化时要生成一组(多个时间,比如订单日期,发货日期等)未来的时间,运用JMeter提供的时间函数并不能较好的完成 场景2:测试Java接口,确又不想继承Abstra ...
- 性能篇 | 17 | jmeter | BeanShell内置变量prev的使用技巧
1 prev简介 BeanShell 有的内置变量,JSR223 也会有对应的变量: prev 提供对当前取样器结果的访问能力 prev 映射:org.apache.jmeter.samplers 的 ...
- 性能篇 | 17 | jmeter | BeanShell内置变量vars的使用技巧
1 简介 BeanShell 有的内置变量,JSR223 也会有对应的变量 vars 是最常用的JMeter变量之一 在 JMeter 内部,映射org.apache.jmeter.threads 的 ...
最新文章
- 阿里三面被挂,幸获内推,历经5轮终于拿到口碑offer
- solr索引服务器的配置和solrj集成开发总结
- 队列的链式存储和实现(C语言)【队列】(8)
- python3.5安装scrapy_Python3.5下安装测试Scrapy
- 【最全最详细】使用publiccms实现动态可维护的导航菜单栏
- 1.原生js封装的获取某一天是当年的第几周方法
- VMware 安装版中 安装VMware tools 图解
- 修改 JSON 对象的值
- Java -- AWT 画图,图像处理
- 华为scp快充协议详解_1A1C多协议快充,倍思30W PD PPS双口充电器(BS-CH905)评测...
- linphone android下载,Linphone | F-Droid - Free and Open Source Android App Repository
- SSD目标检测流程深入理解
- STC8A8K64D4 EEPROM读写失败
- 双十一特辑:Python采集商品数据,实时了解商品价格
- 用工作流思想实现简单的校园请假系统
- 巧用canvas实现画板功能,使用画笔在图片上涂画,橡皮擦可擦除涂画,并保存
- 关于 ProgPoW:来自芯片工程师的观点
- CentOS7 磁盘重新调整分配
- 多方面,全访问的剖析Tomcat十大线程和四大通道
- python爬取app播放的视频,Python爬虫工程师必学——App数据抓取实战视频教程
热门文章
- .jpg .png .jpeg图片转.eps矢量图的python脚本
- python好用的内置库_python内置的高效好用各种库
- 在html中生成动态表格数据,JavaScript实现网页动态生成表格
- 怎样卸载干净Oracle
- 虚拟机器人(巡线竞速)
- PMP备考经验分享 制表很重要
- Windows读取NXP MiFare Ultralight C类型NFC卡片的信息
- vmware 虚拟机恢复ghost镜像文件
- windows 文件后缀名
- 苹果背后的拼多多双11“农产品狂想曲”