beanshell脚本,beanshell脚本语法入门

http://www.itjxue.com  2023-01-14 21:44  来源:未知  点击次数: 

MeterSphere接口测试中使用beanshell脚本进行参数哈希sha1加密

需求是这样的,token是从第三步接口进行产生的。通过脚本

import org.apache.commons.codec.digest.DigestUtils;

//导入org.apache.commons.codec.digest.DigestUtils包;

String sign = DigestUtils.sha1Hex ("${__time}${token}xxxxx").toUpperCase( );

//定义sign=服务器时间+token+固定密码xxxxx;然后.toUpperCase( )大写传出;

vars.put("sign", sign);?

//导出签名以第四条接口使用;

第4条case直接使用${sign}就可以使用上一步的sign进行加密

MeterSphere接口测试中使用beanshell脚本进行md5加密

import org.apache.commons.codec.digest.DigestUtils;

//导入org.apache.commons.codec.digest.DigestUtils;

String timeStamp = "${__time(/1000,)}";

//定义时间timeStamp=服务器时间;

String randomStr = "${__Random(11111111,99999999)}";

//定义时间随机数=8位1-9的随机数;

String tmp = timeStamp + randomStr + "xxxxx";

//定义tmp=时间timeStamp,8位随机数和密码xxxxx;

log.info("timeStamp:" + timeStamp);

//打印timeStamp;

log.info("randomStr:" + randomStr);

//打印randomStr;

log.info("tmp:" + tmp);

//打印tmp;

//String un = DigestUtils.sha1Hex(tmp);

//定义un=哈希sha1加密的tmp;

//log.info("un:" + un);

//打印un;

String signature = DigestUtils.md5Hex (DigestUtils.sha1Hex(tmp)).toUpperCase();

//定义signature==哈希sha1加密的tmp然后再进行md5加密后进行大写;

log.info("signature:" + signature);

//打印signature;

vars.put("signature", signature);

//打印signature;

vars.put("timeStamp", timeStamp);

//打印timeStamp;

vars.put("randomStr", randomStr);

//打印randomStr;

beanshell中break的使用(break不再只是结束循环!)

使用jmeter如果单纯的用什么响应断言那就没意思了,并不能起到接口测试的目的,因为实在是没啥意义……

所以会用到beanshell来解析接口返回的json,针对json中的某些值进行具体的断言

使用beanshell时就会遇到问题!

用了就会知道,那个Failure=true或false就是断言的结果,但是!当你的beanshell脚本写一堆,不只一处Failure时,就会发现最后的结果并不是自己想要的。尤其是在循环里,该怎么用??

多次尝试和探索,终于知道了break的妙用

首先说一下Failure这个玩楞在jmeter中的作用:Failure就是一个普通的beanloon变量,当beanshell脚本执行完后(注意:是执行完后!),jmeter会去判断Failure的值,是true的话就是断言失败,也就是接口有问题

那么~问题来了,脚本写的多的时候,本来前边Failure是true了,但是后边的继续执行,又把Failure置为了false。导致最后结果并没有报错,而是接口执行成功,如下这样

在java编写时,break一般是用在循环或switch里的,如果这样写在if里是报错的……

居然!!!jmeter中可以这样用!

在Failure断言后加break,来结束脚本的执行

当然,这样一旦断言失败,就结束脚本,后边的也就不执行了……

没关系啊,断言失败就说明接口有问题,后边的可以不执行。也比断言有问题最后还显示成功好吧,哈哈。不过这也是jmeter不完善的地方

break可以结束脚本,那beanshell脚本的for循环或者switch中的break还是结束循环的作用吗?

yes,他们的break依旧生效

如图,既有多个for循环,又有switch,如果if里的break执行,则脚本结束,case的break执行,继续下一个循环,不会结束switch

(责任编辑:IT教学网)

更多

推荐广告特效文章