[转帖]JSR223控件简介
JSR223控件简介
JSR223取样器允许执行JSR223脚本代码用于创建/更新所需的某些变量。
由于JSR223脚本编译方式基本相同,后续将不再介绍如JSR223前置处理器、JSR223后置处理器、JSR223断言、JSR223定时器以及JSR223监听器
相比于BeanShell 取样器,JSR223取样器+groovy脚本具有可大大提高性能的功能(编译),同时支持更多的脚本语言,其中包括BeanShell脚本,所以在编写脚本时不建议使用BeanShell 取样器,也不再对BeanShell 取样器进行讲述,如果需要,使用JSR223取样器编写脚本是更好的选择。
由于本人只了解JAVA,所以以下脚本说明,均基于JSR223+groovy的java语法编写进行讲述,其他语言脚本我也不懂,请自行参阅。

属性描述
名称:显示的此取样器的描述性名称,可自定义
语言:要使用的JSR223脚本语言的类型
参数:要传递到脚本文件或脚本的参数列表
脚本文件:用于执行的脚本文件,若没有脚本文件,将执行脚本
脚本:传递给JSR223执行的脚本
如果提供了脚本文件,则执行脚本文件,否则执行脚本。
JSR223用法详解
1、调用内置函数

获取返回数据并转换为String字符串
String Responsedata = prev.getResponseDataAsString();
if(Responsedata.contains("百度一下,你就知道")){
//如果参数为true,则样本执行判断为成功,为false,则设置样本失败
prev.setSuccessful(true);
}else{
prev.setSuccessful(false);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
获取返回数据并保存为字节数组对象,适用于保存返回数据至本地(如下载文件等操作)
import java.io.*;
byte[] bytes = prev.getResponseData();
String file_path = "F:/download/test.html";
File file = new File(file_path);
FileOutputStream out = new FileOutputStream(file);
out.write(bytes);
out.close();
- 1
- 2
- 3
- 4
- 5
- 6
- 7
prev.getResponseDataAsString()与prev.getResponseData()都是获取Response Body的内容,只是返回的数据类型不同,prev.getResponseDataAsString()返回String字符串,prev.getResponseData()返回byte[]字节数组,使用时可根据实际需要对返回数据进行处理。

获取请求头信息
String headers = prev.getRequestHeaders() ;
- 1

获取请求返回的code
String code = prev.getResponseCode() ;
- 1
获取响应信息
String responsesmessage = prev.getResponseMessage() ;
- 1

获取响应头信息
String responsesheader= prev.getResponseHeaders() ;
- 1

//获取请求URL
URL url = prev.getURL() ;
String url1 = prev.getUrlAsString();
- 1
- 2

设置响应信息Response message
prev.setResponseMessage("这是响应信息");
- 1
设置响应代码Response code
prev.setResponseCode("404");
- 1
注意:在beanshell脚本中可直接使用
ResponseMessage=“这是响应信息”;
ResponseCode=“404”;
IsSuccess=“false”;
但是在JSR223中不能用,而只能使用prev.set的方法

打印日志 ,日志会保存在bin目录下的jmeter.log文件中
默认支持级别为info及以上,debug级别日志由于太多,默认不支持
log.error("This is error message");
- 1
OUT功能等同于System.out,将在Jmeter工作台输出信息
OUT.println("此消息将被输出到Jmeter控制台");
- 1

设置属性与调用属性
${__setProperty(test1,property1,)};
props.put("test2","property2");
String test1 =props.get("test1");
String test2 = props.get("test2");
- 1
- 2
- 3
- 4
属性是所有线程公有的,需要注意的是,在JSR223或BeanShell中使用props.put(”name”,”value”)创建的属性,不能直接在当前JSR223或BeanShell中使用${__P(name,)}或${__property(name,)}进行调用,如果需要在当前JSR223或BeanShell中调用,需要使用props.get(“name”)方法。此处的name是属性名称,而不是随机的字符串。
定义变量与调用变量
此处的name是在用户定义的变量中定义的变量,已赋值为lucy
String test5 = vars.get("name");
//定义变量值,并获取
vars.put("name2","jack");
String test6 = vars.get("name2");
- 1
- 2
- 3
- 4
通过vars.put(“name”,”value”)方式定义的变量作用域限制为当前线程组,如果要跨线程调用,请使用属性定义,与props.put(”name”,”value”)同样的,vars.put(“name”,”value”)创建的变量,也不能直接在当前JSR223或BeanShell中使用${name}进行调用,而是使用vars.get(“name”)方法。
2、执行外部java文件
新建一个Java文件,添加如下代码
public class AddTest {
public int add(int a ,int b){
return a+b ;
}
}
- 1
- 2
- 3
- 4
- 5
然后在JSR223中引入源文件并执行,执行方法与JAVA本身的方法一致
//引入源文件
source("F:/apache-jmeter-5.3/TestPlan/AddTest.java");
AddTest add = new AddTest();
int sum = add.add(15,20);
log.info("sum is : " + sum);
- 1
- 2
- 3
- 4
执行结果如下:

3、执行jar包
JSR223可调用外部jar包,也可以调用Jmeter提供的内部jar包,通常将我们写的代码打包成jar包后,有两种方法可以引入jar包,Jar包方法调用与JAVA语法一致。
1、将jar包放到Jmeter安装目录的\lib\ext目录下
2、在测试计划中导入

调用Jmeter内置MD5加密
import org.apache.commons.codec.digest.DigestUtils;
String password = DigestUtils.md5Hex("password");
vars.put("password",password.toUpperCase());
- 1
- 2
- 3
调用外部jar
AddTest add = new AddTest();
int sum = add.add(15,10);
log.info("sum is : " + sum);
- 1
- 2
- 3

</article>
[转帖]JSR223控件简介的更多相关文章
- XLSReadWrite控件简介
2015-10-22 23:57:55 原帖地址:http://www.cnblogs.com/dabiao/archive/2011/07/08/2100609.html XLSReadWrite ...
- ADO面板上的控件简介
ADO面板上的控件简介 一. TADOConnection组件该组件用于建立数据库的连接.ADO的数据源组件和命令组件可以通过该组件运行命令及数据库中提取数据等.该组件用于建立数据库的连接,该连接可被 ...
- EasyUI:datagrid控件简介
EasyUI:datagrid控件简介 1,水平滚动条属性: //显示滚动条 fitColumns:false //不显示滚动条 fitColumns:true
- iOS开发——UI进阶篇(十九)UISearchBar控件简介
最近用到搜索功能.总结一下 搜索,无疑可以使用UISearchBar控件! 那就先了解一下UISearchBar控件吧! UISearchBar控件就是要为你完成搜索功能的一个专用控件.它集成了很多你 ...
- ASP.NET数据绑定控件简介
•数据绑定分为数据源和数据绑定控件两部分(①数据绑定控件通过数据源获取和修改数据②数据绑定控件通过数据源隔离数据提供者和数据使用者)数据绑定控件→数据源→数据库•数据源:SqlDataSource(连 ...
- Android Tab控件简介
在Android中,Tab控件是一种很常用的控件:Tab控件即标签页,可以在一页中切换显示N页内容: Tab控件具有两种实现过程,一是在同一个Activity中切换显示不同的标签页,这种主要是通过修改 ...
- Delphi7 ADO面板上的控件简介
? ADO Connection的主要方法:1) Begin Trans 开始启动一个新的事务,必须保证数据连接处于激活状态.2) Cancel 关闭于数据库的连接.3) Commit T ...
- ckeditor粘帖上传图片控件-更新-2.0.15版本
泽优Word图片上传产品测试 泽优Word图片上传控件WordPaster2,基于php开发环境测试. 泽优软件官网Word图片上传产品介绍页面: http://www.ncmem.com/webap ...
- C#窗体控件简介ListBox(需整理)
ListBox 控件 ListBox 控件又称列表框,它显示一个项目列表供用户选择.在列表框中,用户 一次可以选择一项,也可以选择多项. 1.常用属性: (1) Items属性: 用于存放列表框中的列 ...
- C#窗体控件简介ListBox
ListBox 控件 ListBox 控件又称列表框,它显示一个项目列表供用户选择.在列表框中,用户 一次可以选择一项,也可以选择多项. 1.常用属性: (1) Items属性: 用于存放列表框中的列 ...
随机推荐
- 计算机网络分层结构--OSI模型、TCP/IP 模型、五层模型
计算机网络分层结构 OSI参考模型与TCP/IP参考模型 五层参考模型
- node.js 命令必须加 npx 才能执行
问题描述 在 Windows 上搭建 Hexo 环境,已经从官网下载安装 node-v18.18.2-x64.msi,并且通过 npm 命令成功安装 hexo. PowerShell 中,直接执行 h ...
- 日常Bug排查-应用Commit报错事务并没有回滚
日常Bug排查-应用Commit报错事务并没有回滚 前言 日常Bug排查系列都是一些简单Bug排查,笔者将在这里介绍一些排查Bug的简单技巧,同时顺便积累素材_. 应用Commit报错并不一定回滚 事 ...
- 当创建statefulset资源后,k8s组件如何协作
本文分享自华为云社区<当创建StatefulSet后,k8s会发生什么?>,作者:可以交个朋友 . 一.StatefulSet介绍 StatefulSet 是用来管理有状态应用的工作负载对 ...
- CTPN+CRNN算法端到端实现文字识别的实战开发
本文分享自华为云社区<CTPN+CRNN 算法端到端实现文字识别>,作者:HWCloudAI. OCR介绍 光学字符识别(英语:Optical Character Recognition, ...
- 云小课 | 华为云KYON之L2CG
摘要:本文介绍KYON独创的L2CG,打通大二层网络,支持企业携带私网IP直接上云,让业务敏捷迁移,大幅降低企业上云的复杂度和成本.同时支持虚拟机粒度迁移,让企业上云过程中无需迁移整个子网. 本文分享 ...
- 火山引擎 DataTester 3 大功能升级:聚焦敏捷、智能与易用,帮助企业降本增效
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 近日,火山引擎数智平台(VeDI)全面升级旗下 A/B 测试产品 DataTester,发布全新功能"M ...
- 数据治理如何做?火山引擎DataLeap帮助这款产品3个月降低计算成本20%
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 本文讲述字节跳动一款 App 产品的数据治理故事.该产品随着用户体量和数据体量不断增长,数仓的任务量.数据量也不断 ...
- 【HZERO】feign调用
feign调用 https://open.hand-china.com/community/detail/603204901962649600 # Hiam获取用户信息示例
- C# 实用第三方库
C# 实用第三方库 Autofac 依赖注入IOC框架 NuGet安装:Autofac.Autofac.Extras.DynamicProxy AutoMapper 对象映射 Mapster 对象映射 ...