变量

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

JMETER与BeanShell的更多相关文章

  1. JMeter中BeanShell实现写入文件

    1.首先F:\test.txt文件为空

  2. jmeter之beanshell提取json数据

    Jmeter BeanShell PostProcessor提取json数据 假设现有需求: 提取sample返回json数据中所有name字段对应的值,返回的json格式如下: {“body”:{“ ...

  3. jmeter通过BeanShell 脚本,实现对http请求参数的加密

    jmeter一直是一款很好的接口和性能测试工具,它是开源的,不需要为此支付任何费用,而且可以下载源码,可以在修改源代码并在此基础上拓展自己的功能或插件,它可以跟ant和jenkins结合起来搭建自己的 ...

  4. JMeter中BeanShell的实际应用

    使用Jmeter的BeanShell断言,把响应数据中的JSON跟数据库中的记录对比 很多时候我们需要把Response Data取到的 Json 字符串跟数据库里的对比,来验证接口的正确性,使用Be ...

  5. jmeter之beanshell取出需要参数,传递给下个请求

    jmeter之beanshell取出需要参数,传递给下个请求 事件背景: 上周同事用jmeter录制脚本,录制成功回放后,并没有达到自己想要的结果. ps:他想从数据库取出某个字段值,然后对数据库做操 ...

  6. jmeter用BeanShell调用jar包对HTTP请求中的参数进行MD5加密

    前提: eclipse.JDK.Jmeter 说明: 本文分为两部分进行配置说明 第一部分:编写JavaMD5加密脚本 第二部分:使用Jmeter的BeanShell进行验证 ************ ...

  7. 利用JMeter的beanshell进行接口的加密处理

    最近项目中在做http协议的接口测试,其中接口请求报文数据有个字段值需要用到加密后的签名,即出于网络传输过程中,对数据安全的考虑,要对请求的数据进行特定的处理(加密),再进行请求. 刚开始由于项目赶进 ...

  8. Jmeter用BeanShell Sampler调用java写的jar包进行MD5加密

    [前言] 在工作中,有时候我们请求的参数可能需要加密,比如登录接口中的密码做了加密操作,今天我就给大家介绍一种方法:Jmeter用BeanShell Sampler调用java写的jar包进行MD5加 ...

  9. JMeter(5) JMeter之BeanShell使用

    BeanShell介绍 BeanShell是用Java写成的,一个小型的.免费的.可以下载的.嵌入式的Java源代码解释器,具有对象脚本语言特性.本篇只记录一下基本的使用.有以下五个组件: Beans ...

  10. jmeter通过BeanShell,实现对接口参数HmacSHA256加密(转)

    jmeter通过BeanShell,实现对接口参数HmacSHA256加密2019-04-29 05:10 ps. 最近抓包网站的登陆请求,发现就2个参数,用户名和密码,通过工具去请求这个接口,一直返 ...

随机推荐

  1. 如何定义 Java 的回调函数,与 JavaScript 回调函数的区别

    JavaScript 中的回调函数 在 JavaScript 中经常使用回调函数,比如:get 请求.post 请求等异步任务.在我们请求之前以及请求之后,都需要完成一些固定的操作,比如:请求之前先从 ...

  2. C#/VB.NET 创建PDF/UA文件

    1.什么是PDF/UA文件 PDF/UA,即Universally Accessible PDF,该格式的PDF文件是于2012年8月以ISO标准14289-1发布的.具有普遍可访问的PDF文档标准. ...

  3. [开源内卷] .NET 定时任务 -- FreeScheduler 支持 cron、持久化、可变定时设置

    前言 卷了,卷了,卷了,最近太卷...这篇文章写了好几天了,由于同类型文章太多,排期到今天发布.实在不想卷,得罪了!各位定时任务开源大佬们! .NET 定时组件生态实在太强大了,写下此文只希望能供大家 ...

  4. k8s数据持久化,pv和pvc

    k8s中为什么使用存储: k8s中的副本控制器保证了pod的始终存储,却保证不了pod中的数据.只有启动一个新pod的,之前pod中的数据会随着容器的删掉而丢失! pv和pvc的概念: Persist ...

  5. 通过ftutilx 插件实现流版式文件全文检索

    Oracle 支持流版式文件的全文检索,而原生的PostgreSQL是不支持流版式文件全文检索的.KingbaseES 通过ftutilx 插件将流版式文件转换成文本文件,从而支持流版式文件全文检索. ...

  6. KingbaseFlySync ddl变更流程

    关键字: KingbaseFlySync.Linux.x86_64.mips64el.aarch64.Java 一.ddl变更流程 1. 停掉客户业务,保证没有新数据产生 确认Oracle数据库上所有 ...

  7. pat乙级每日习题

    欢迎加入我们:qq群:1054587486 1:https://pintia.cn/problem-sets/994805260223102976/problems/99480532591848652 ...

  8. 利用 Gitea Doctor自助诊断工具帮助管理员排查问题

    ​我常常在Gitea论坛或者Hostea为网友解答Gitea版本升级方面的问题,但发现少有人知道利用 gitea doctor 命令行工具排查问题,因此这篇博文将给大家带来通俗易懂的介绍. 你知道吗? ...

  9. ORM增删改查并发性能测试2

    前言 上一篇<ORM增删改查并发性能测试>出现了点小失误,有的输出SQL日志的代码没有禁用,数据库连接字符串可能有问题.统一环境,统一代码后,重新写一篇. 这次重点是并发性能测试,真不是为 ...

  10. Centos7 安装部署Kubernetes(k8s)集群

    目录 一.系统环境 二.前言 三.Kubernetes 3.1 概述 3.2 Kubernetes 组件 3.2.1 控制平面组件 3.2.2 Node组件 四.安装部署Kubernetes集群 4. ...