beanshell获取请求参数,beanshell如何输出参数
Jmeter之BeanShell的使用
背景:在一次接口压测过程中,接口的参数值是通过java类中的方法获取的,此方法没有封装成接口,又因参数值存在有效期(15min),所以导致在执行压测的过程中需考虑在执行的时长内参数值是否失效的问题。
在未使用beanshell的时候(当时不知道如何使用,且时间紧,没时间研究),就先在IntelliJ Idea运行Java程序获取参数值,然后将参数值复制出来粘贴到jmeter中,然后再执行脚本进行压测。暂时不影响测试,但是操作起来有点麻烦。
趁着测试工作结束,正好有时间研究下jmeter中beanshell的使用,总结如下:
1、先将java程序打成jar包;
打jar包参考:
2、将1中jar包复制到jmeter安装路径D:\Program Files\apache-jmeter-5.3\lib\ext\下,如果jave程序中有引用到其它jar包(import导入的),也一并复制到该目录下;
3、启动jmeter,在测试计划右侧页面下方,添加2中复制的jar包:
4、然后在测试计划下,创建线程组,添加BeanShell取样器,在取样器右侧页面脚本处,编写java脚本:
注:脚本可接收传参,参数传入方式:${参数名1} ${参数名2} ...,参数之间用空格隔开,在脚本中可使用bsh.args[i]获取参数值,i表示参数在数组中的索引。参数的定义,放在用户定义的变量中,在线程组下添加用户定义的变量:
5、在线程组下添加HTTP请求,在消息体数据中传递请求参数(json):
6、在线程组下添加查看结果数,执行HTTP请求,查看结果树中请求body中的参数(成功获取):
至此,使用BeanShell的方式成功传参,解决了手动获取参数的麻烦。
jmeter接口测试,怎么在下一个接口调用上一个接口的数据
常用的两种方式,第二种容易上手
1、使用正则提取器
2、JSON?Extractor
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进行加密
Jmeter BeanShell 中怎么获取 excel 中的参数 · TesterHome
可以自己写一个jar处理excel文档得到参数(自写插件)
可以将excel文档转换成csv文档然后用jmeter自带的函数获取参数
beanshell 怎样访问内部类
加入“后置处理器”-“正则表达式提取器”:引用名称即使用的参数名;填入正则表达式;模板选取匹配的组;匹配数字为匹配的个数,负数表示全部匹配;缺省值为没有匹配到时的取值。示例中用正则表达式匹配出产品id作为后续使用的参数。提取到的参数,调用时用${product_id_1},${product_id_2},${product_id_3}……;如果想要得到匹配出的参数的个数,用${product_id_matchNr};如果想随机选取其中一个,只需将匹配数字设为0,使用${product_id}调用即可。可以一次匹配多组;示例中只匹配了一个,假如正则表达式为name="chkProductIds" id="chk(.+?)" value="(.+?)",就会有两组参数;想获得匹配到的组个数用${product_id_g};模板针对的是匹配到的字符串再做组的区分,比如希望${product_id}取出的是第二组参数的值,用$2$。
jmeter,BeanShell PreProcessor简单使用引入jmeter参数
1.设置用户自定义变量,ddd 值设置为随机数 ${__Random(10,500,)}。
尝试从HTTP请求中直接获取参数获显示总是空,从用户自定义参数中可以获取到,因此加个该菜单,为了获取随机值,在进行签名。
2.设置BeanShell PreProcessor
在parameters中设置需要参数化的变量
如下图:
3.添加Debug Sampler
4.运行查看结果树
5.调试成功后,将参数化参数写到HTTP请求中,进行请求
6.最终结果