不废话直接上场景

场景1:业务单据参数化时要生成一组(多个时间,比如订单日期,发货日期等)未来的时间,运用JMeter提供的时间函数并不能较好的完成

场景2:测试Java接口,确又不想继承AbstractJavaSamplerClient 来完成,此时可以用BeanShell Sampler来完成

场景3:线程共享变量,我们希望线程之间共享一个变量,可以利用BeanShell来完成

其它功能自己类推......

场景1:生成订单日期与发货日期,然后放入变量

代码方便复制粘贴:

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;Date date = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
String nowDate = sf.format(date);
Calendar cal = Calendar.getInstance();
cal.setTime(sf.parse(nowDate));
cal.add(Calendar.DAY_OF_YEAR, +3);
String chanceDate = sf.format(cal.getTime());
cal.add(Calendar.DAY_OF_YEAR, +7);
String planFinishDate = sf.format(cal.getTime());
vars.put("orderDate",chanceDate);
vars.put("delivery",planFinishDate);

这里的 orderDate delivery 在Vars中,在JMeter中是以Map的形式存放的,我们只需要${变量名}来引用,变量能够保证数据一致性(简单说就是线程互不干扰)。走起,调用试试:

1.Java请求调用

2.结果树中察看

如果这两个时间(orderDate,delivery)在测试过程中只需要生成一次,可以把BeanShell Sampler 放在仅一次控制器下,这样性能更加。

场景2:

下面BeanUtil是一个接口程序,已经打包BeanShell.jar,现在测试其中的getUserName与getAddress方法

直接用BeanShell Sampler到调用接口方法:

上图中,我们简单的调用了getUserName()与getAddress()方法

log.error是在控制台输出结果(仅仅调试的时候用,正式测试时去除掉)。

vars.put()是把取得的结果放到变量,供下一个Sampler调用()。

当然有个最得要的部分别忘记了,接口包BeanShell.jar要放到%JMETER_HOME%\lib目录(建议),当然你也可以在测试计划中加入(不建议),如下图:

如果 BeanShell.jar(你的包名可以任意取名)依赖别的包,那么它所依赖的包也要一道放到%JMETER_HOME%\lib目录。

场景3

线程共享变量

JMeter中线程间共享变量可以通过定义属性值来完成,JMeter启动时会读取一些属性文件,比如jmeter.properties、user.properties,这些属性

值是可以增加的,也可以修改的,通过BeanShell可以对其进行更改。

以BeanShell Sampler为例,在其中通过props.put()来增加属性,props.get()来获取属性。

在其它Sampler中,比如Java Sampler中通过 ${__property(【属性名称】,,)}来获取。

上图中加入一个test属性,下图用 ${__property(test,,)}引用。

Over !

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. 性能篇 | 17 | jmeter | BeanShell内置变量prev的使用技巧

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

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

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

最新文章

  1. idea上java接口自动化_Java接口自动化之IDEA创建及运行maven项目
  2. SNMP OID批量枚举工具
  3. C# 移除最后一个字符
  4. Arcface demo
  5. 线段树 求矩形并 面积
  6. SDUT2389Ballot evaluation
  7. SQL:我为什么慢你心里没数吗?
  8. matlab gui界面画三角形,新手,用gui界面画李萨如图,出错,求解答
  9. A69G-HDMI问题解决集锦
  10. jQuery百家姓验证
  11. vue电商后台管理项目总结
  12. 什么是通配符 计算机网络,通配符
  13. python可视化分析网易云音乐评论_网易云音乐评论 可视化分析
  14. 提问的智慧( 中文阅读笔记)#
  15. 96PIN直插DIP千兆四口网络变压器 千兆交换机路由器网络滤波器
  16. 用 mkcert 搭建本地开发受信 HTTPS 证书环境
  17. unity 四元数旋转各元素值的计算方法
  18. Bowtie2的简单使用笔记
  19. 湖南省岳阳市谷歌高清卫星地图下载
  20. android微信迁移数据,【CSDN博客迁移】Android集成微信支付之-天坑

热门文章

  1. 七段数码管共阳(阴)极常用字形码
  2. Python感知器算法
  3. python opencv人脸识别考勤系统的完整源码
  4. mysql---创建学生表
  5. lnmp搭建qq农场
  6. flink catalog 及dialect、数据转存分析
  7. 【python】使用pip安装指定版本的模块,卸载、查看、更新包
  8. NI的LabView2022工具的安装与使用
  9. OSI的七层模型详解
  10. Epoll原理深入分析