首页 > 系统相关 >Jmeter 的 BeanShell

Jmeter 的 BeanShell

时间:2023-08-16 11:00:33浏览次数:33  
标签:Jmeter log ctx 获取 BeanShell props prev String

通过 BeanShell 可以访问 ctx、vars、props、prev、sampler、log;
1.通过 ctx 可以访问 jmeter 运行时状态,比如线程数及线程状态;

ctx:获取当前线程上下文数据(可获取所有信息);可以通过获取jmeterContent 实例来获取运行时信息;
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():获取采样器山下文数据。

eg. ctx.getThreadNum().toString()


2. 通过 vars 访问 jmeter 中定义的变量,也可以在此定义变量供后面的元件调用;

String var1 = vars.get(“变量名”):获取变量的值(假设为String类型)。
vars.put(“变量名”, 变量值):设置变量值。
vars.remove(“变量名”); 删除后其值为空


3. 通过 props 访问 jmeter 运行时设置;

props.get(String) 可以获取JMeter中已经生成的属性。
props.put(String,String)可以创建和更新JMeter属性。
props.setProperty(String,String); 设置属性值,与 put类似
pPC = props.size(); 获取有多少 属性
log.info("pPC: " + pPC);
props.remove("String")


4. 通过 prev 访问 前一个取样器结果;获取响应体数据(String类型):

prevResponse = prev.getResponseDataAsString();
log.info("prevResponse:" + prevResponse);

获取状态码(同ResponseCode,String类型):
responseCode = prev.getResponseCode() ;
log.info("responseCode:" + responseCode);

判断响应状态码是否为OK对应的状态码(200),结果只有true和false:
responseCodeBoolean = prev.isResponseCodeOK();
log.info("responseCodeBoolean:" + responseCodeBoolean);

获取线程名:
prevThreadName = prev.getThreadName();
log.info("prevThreadName:" + prevThreadName);

获取请求内容: prev.getSamplerData();
获取请求开始时间: prev.getStartTime();
获取请求结束时间: prev.getEndTime();
获取接口的url路径:prev.getUrlAsString();


5. 通过 sampler 来访问当前取样器件;
6. 通过 log 写日志,输出信息到日志(文件),只能打印字符串;

log.debug(“调试信息”)
log.info(“响应状态码” + ResponseCode)
log.warn(“警告信息”)
log.error(“出错信息”)

eg.1

String  result = prev.getResponseDataAsString();

if(result.contains("error")){
  Failure=true;
  log.error("接口失败: " + result);
}

if(result.contains("Connection refused")){
  Failure=true;
  log.error("服务器连接拒绝: " + result);
}

 

eg.2 

将返回结果写到文件中:
String resp=prev.getResponseDataAsString(); // 获取响应的内容
FileWriter wr; // 构建一个文件的写入方法
wr= new FileWriter("D://tool//temp//file.json",true); //新建一个写入文件
wr.write(resp); //将获取的内容写入文件
wr.flush(); // 刷新文件
wr.close(); //关闭文件

 

eg.3

 

标签:Jmeter,log,ctx,获取,BeanShell,props,prev,String
From: https://www.cnblogs.com/xj63183/p/17633345.html

相关文章

  • Jmeter 安装自定义插件
    1.下载PluginsManager下载地址:https://jmeter-plugins.org/install/Install/2.将下载的jar包复制到JMeter中的lib\ext目录下3.打开jmeter->选项->PluginsManager->availableplugins->搜索CustomThreadGroups插件->勾选->点击ApplyChangesandRestartJmeterInstalledPl......
  • jmeter 身份证号 处理方式
    1.只要求长度,不校验规则的,直接使用jmeter自带函数${__RandomString(18,0123456789,)}2.有规则:1)python的第三方包faker写好打成.exe包,jmeter通过OS进程取样器运行获取;2)java代码实现,打成jar包,或写成jmeter函数、或Beanshell中实现。弄成函数后最好用;......
  • Jmeter 分布式压测
    ****jmeter分布式1.windows做控制机controller,linux做压测机agent;2.复制一份jmeter工具包做slave/agent ,修改 jmeter配置:jmeter.properties->server_port=1099server.rmi.localport=1099server.rmi.ssl.disable=true3.复制到目标linux机器,目录权限chmod-R755......
  • Jmeter foreach 控制器应用
    场景:订单列表返回N个订单,需要针对N个订单进行确认操作1、订单列表接口,JSON提取器提取N个订单编号,如图 2、foreach控制器 3、beanshell前置处理器,将订单号FSO111--》替换为FMO111 ......
  • jmeter详解(2)-GUI图形页面
    菜单栏 对应中文 运行里面有和远程执行相关的 选项包括外观语言、里面有日志查看的功能,SSL管理与https协议的测试相关 工具里面有函数助手及报告相关的东西,以及其他 快捷工具栏 从左到右依次为:新建、模版、打开、保存、剪切、粘贴、全部展开、全部折叠、切......
  • RunnerGo的相比较JMeter优势,能不能替代?
    目前在性能测试领域市场jmeter占有率是非常高的,主要原因是相对比其他性能测试工具使用更简单(开源、易扩展),功能更强大(满足多种协议的接口),但是随着研发协同的升级,平台化的性能测试工具更能高效的基于团队开展协作,比如我们今天要说的开源测试平台RunnerGo。 性能测试工具平台化优......
  • jmeter详解(1)-安装目录
    JMeter官网:https://jmeter.apache.org/GitHub:https://github.com/apache/jmeter用户文档(英文):https://jmeter.apache.org/usermanual/index.html ApacheJMeter可用于测试静态和动态资源、Web动态应用程序的性能。它可以用来模拟一台服务器、一组服务器、网络或对象上的重......
  • jmeter-软测培训
    1:get请求 2:请求默认值步骤:新建线程组-配置原件/HTTP请求默认值 3:post请求 4:断言  http请求-添加断言-响应断言,测试模式里去匹配例如:http://httpbin.org/post运行,添加监听器-断言结果 5:数据驱动(数字表示层级)线程组-1循环控制器--2HTTP请求--3csv数据文件设置-......
  • jmeter分布式压测
    无论是jdk还是jmeter都放在usr/local目录下jmeter分布式压测过程1.控制机跟代理机中间ping通2.控制机代理机安装相同版本的jdk,并配置jdk环境环境配置成功在cmd打Java或javac可以获取内容java-version查看jdk版本3.控制机代理机安装相同版本的jmter并配置环境将jmeterbin目......
  • jmeter通过BeanShell对接口参数进行MD5和HmacSHA256加密【杭州多测师_王sir】
    一、在eclipse里面编写MD5加密算法packagecom.Base64;importjava.security.MessageDigest;importjava.security.NoSuchAlgorithmException;publicclassMd5Utils{publicstaticStringmd5(StringsourceStr){Stringresult="";try......