首页 > 系统相关 >JMETER与BeanShell

JMETER与BeanShell

时间:2022-11-01 20:25:57浏览次数:63  
标签:info name vars get BeanShell JMETER 变量 log

变量

Beanshell应用自定义变量有两种方法:

#第一种方法,使用${key}格式,但是需要注意这是用应用的变量是没有定义数据类型的
#log.info(String Key)只能打印字符串,所以按下述写法会报错
name = ${name};
log.info(name);
#需要改成
name1 = "${name}";
log.info(name1);
#第二种使用vars.get(String key),这里需要注意应用的变量需要加上引号
name3 = vars.get("name");

 把变量A赋值给变量B

#这时候+号拼接完就是字符串了
int a = 123;
b = "abc" + a;
log.info(b);
#注意put赋值给的变量需要加上引号vars.put(String key,String value)
vars.put("c",b);
log.info(vars.get("c"));

 区别:

${key}引用的都是最开始设置的自定义变量。vars.get会获取最新变量

name = "${name}";
vars.put("name",name + 123);
log.info("vars.get获取变量:" + vars.get("name")); // vars.get获取变量:xiaojianjian123
log.info("${}获取变量:" + "${name}") // ${}获取变量:xiaojianjian

实例:

我们现在有一个自定义变量设置在线程组里,cnt初始值为0,循环10次,每次循环我们需要让cnt+1

cnt = "${cnt}";
nextCnt = Integer.parseInt(cnt) +1;
log.info("第一种整型转字符串:" + nextCnt.toString());
//log.info("第二种整型转字符串:" + String.valueOf(nextCnt));
vars.put("cnt",nextCnt.toString())

这里我们需要将字符串先转数字,再将数字转回字符串

这里要特别注意:

写BeanShell的时候不要使用Debug sampler,因为Debug sampler会再次调用一次BeanShell造成错误多次计算,正式运行的时候记得禁用Debug sampler

跨线程取值

A线程拥有一个用户自定义变量,这是B线程使用vars.get同样可以取到值,但是如果实在A线程的BeanShell中设置的变量用vars就取不到了

//BeanShellTestElement: null002 取上一个线程的BeanShell变量
name = vars.get("name");
log.info(name+"002");
//BeanShellTestElement: xiaojianjian001002 取上一个线程的用户自定义变量
name = vars.get("name");
log.info(name+"002");

那如果要取上一个线程的BeanShell变量就需要用props

//A线程
name = "xiaojianjian";
props.put("name1",name);
//B线程 BeanShellTestElement: xiaojianjian002
name = props.get("name1");
log.info(name+"002");

 通过使用假接口来将脚本简化

安装JMETER插件Dummy Sampler

 

 

 

有了这个模拟器后,就可以根据它代替很多真实接口

那我们有了接口同样可以通过BeanShell去获取它的请求和响应

在接口下添加一个BeanShell后置处理器(以上面Dummy的取样器为例子)

// print request data
log.info(prev.getSamplerData()); // https://www.123321.com
// print response data
log.info(prev.getResponseDataAsString()); // {"data":1}
// print response code
log.info(prev.getResponseCode()); //200

 条件判断

与其他语言类似

1)比较相等用equals、==、!=

2)比较大小用>、<、>=、<=

3) 包含关系contains

// 判断状态码是否为200
resCode = prev.getResponseCode();
log.info("响应码:"+resCode);
if (resCode.equals("200")){
    log.info("请求成功");
    }
else{
    log.info("请求失败");
    }
// age1是之前的接口提取出来的变量
age = vars.get("age1");
log.info(age);
if (Integer.parseInt(age) > 14){
    log.info("已经不是小孩子:"+age);
    }
else{
    log.info("年龄小于14" + age);
    }
age = vars.get("age1");
if (!age.contains("1")){
    log.info("不包括1");
    }
else{
    log.info("包括1");
    }

对list的相关操作

// 对于list的操作
import java.util.List;
import java.util.ArrayList;

 创建一个list

// 创建一个list
List list1 = new ArrayList();
// 添加元素:add
list1.add("first");
// 在指定位置插入元素
list1.add(0,"l am the first");
log.info("添加后"+list1); // 添加后[l am the first, first]

除了使用add我们还可以使用addAll的方法

// 创建一个list2
List list2 = new ArrayList();
// 把list1所有的元素添加到list2中,成功同时返回True,失败返回False,addAll(index,list);
Boolean isAdd = list2.addAll(0,list1);
log.info("是否加入成功:"+ isAdd + " 加入后的list2"+list2); //是否加入成功:true 加入后的list2[l am the first, first]

 根据索引找值,根据值返回第一个匹配到索引

// 获取list中的值
value1 = list2.get(0);
log.info(value1); // l am the first
// 获取list中值对应的第一个索引
List list3 = new ArrayList();
list3.add(1);
list3.add(2);
list3.add(1);
log.info(list3.indexOf(1).toString()); // 0

返回list的长度

//返回list长度
log.info(list3.size().toString()); // 3

循环list取值

//for循环取值
for(int i=0 ; i < list3.size();i++){
    log.info(list3.get(i).toString());
}

 友情链接:

https://www.cnblogs.com/yetangjian/p/16818697.html

标签:info,name,vars,get,BeanShell,JMETER,变量,log
From: https://www.cnblogs.com/yetangjian/p/16815968.html

相关文章

  • 25Jmeter之服务器性能资源监测-Jconsole &Linux命令
    一.通过Jconsole进行监控服务器资源情况Jconsole是一个内置Java性能分析器,可以轻松地使用JConsole来监控Java应用程序性能和跟踪Java中的代码。(1)开始—运行—输......
  • 26Jmeter之60并发时Address alread in use :connect
    发现问题的背景:执行阶梯压力测试,大概60并发报错:JMeter错误:java.net.BindException:Addressalreadyinuse:connect1.分析报错原因:windows默认的TCP/IP端口只有1024-5......
  • 23Jmeter之服务器性能资源监测-Jmeter插件
    如何监控服务器CPU、内存、磁盘、网络等相关资源?需要下载三个文件,其中JMeterPlugins-Standard和JMeterPlugins-Extras是客户端的,ServerAgent是服务端的。前两个的下载地址......
  • 24Jmeter之服务器性能资源监测-nmon
    通过nmon进行监控服务器资源情况1.认识nmon(1)简介nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具,它能在系统运行过程中实时地捕捉系统资源的使用情况,记......
  • 19Jmeter之取样器 jp@gc - Dummy Sampler
    用于模拟一个接口请求,效果类似于Mock。可以设置响应吗,响应信息,延迟时间(latency),响应时间,模仿响应时间,请求数据,响应数据意义在于:当服务器还没开发完成的时候,帮助调试脚本......
  • 21Jmeter之监听器jp@gc - Response Times Over Time
    RT响应时间,从发起请求到完全接收到应答的时间消耗。在聚合报告中可以查看平均值,详细内容添加-监听器-jp@gc-ResponseTimesOverTime ......
  • 20Jmeter之监听器jp@gc - Active Threads Over Time
    查看不同时间的活动用户数量当前的时间间隔是1毫秒,在setting中可以设置时间间隔以及其他的参数,右击可以导出CSV文档 ......
  • 22Jmeter之监听器jp@gc - Transactions per Second
    jmeter内的聚合报告内可以看到平均吞吐量,通过jp@gc-TransactionsperSecond可以查看某时间点的吞吐量。通过更改并发数去压测,可以找出服务器的最大TPS......
  • 15Jmeter之plugins插件安装
    jmeter中plugins插件安装,该插件可以快速安装其他插件。1.下载配置下载插件JMeterPluginsManager:https://jmeter-plugins.org/wiki/PluginsManager/下载JAR包并放至a......
  • 16Jmeter之阶梯压测元件Stepping Thread Group
    在日常性能测试过程中,有时需要对被测对象不断的增加压力,直至达到某个值后,并持续运行一段时间。本文介绍在jmeter中,使用插件SteppingThreadGroup来实现对系统不断增压的测......