博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jmeter Beanshell 高阶使用
阅读量:3977 次
发布时间:2019-05-24

本文共 2525 字,大约阅读时间需要 8 分钟。

1、 Beanshell 的介绍

  • Beanshell主要分为:
    - 1、 BeanShell PreProcessor 【重要】
    - 2、BeanShell PostProcessor 【重要】
    - 3、BeanShell Assertion 【重要】
    - 4、BeanShell Timer
    - 5、BeanShell Listener 【重要】

2、Beanshell 的使用

- 单线程中读取变量和使用变量
// 获取变量String hotelSystemConnectionId = vars.get("hotelSystemConnectionId");// 存储变量vars.get("hotelSystemConnectionId",hotelSystemConnectionId); // 格式为:vars.get("变自定义变量名",值)// 值得注意的是:vars.get只能存储string的值,如果是object对象需要使用另外的方法'''目前已知的是只能存储:List、Mapjsonobject好像都不行'''// 存储变量vars.putObject("hotelSystemConnectionId", Object);// 获取变量vars.getObject("hotelSystemConnectionId");
- 多线程中读取变量和使用变量
props.get("hotelSystemConnectionId");props.get("hotelSystemConnectionId",hotelSystemConnectionId);props.putObject("hotelSystemConnectionId", Object);props.getObject("hotelSystemConnectionId");vars和props的区别就是props可以跨线程组使用,并且props返回的是Hashtable对象
-  线程中打印日志	 	在windows用界面右上角可以点击查看到打印的日志	 	如果是在Linux上,那么运行完成后,查看jmeter.log可以看到该日志
// 打印任意日志:log.info("hotelSystemConnectionId:" + hotelSystemConnectionId);// 有时候,你并不像打印info级别的日志,可以在jmeter的bin目录下编辑jmeter.properties文件,修改log等级为error'''操作步骤:1、jmeter的bin目录下编辑jmeter.properties文件,其中将#jmeter.loggerpanel.display=false	解注释并修改为true [jmeter.loggerpanel.display=true]2、修改jmeter的bin目录下编辑log4j2.xml文件,搜索level,然后修改成对应的error级别//打印error级别的日志log.error("anything");// 如果想在cmd显示日志,可以使用print("anything");'''-----------------------------  请求 ----------------------------// 获取到请求的boby (实际上会同时返回url,和请求boby)log.info("获取到请求的boby:",prev.getSamplerData());// 获取请求的urllog.info("获取请求的url:"+prev.getUrlAsString());----------------------------- 响应 ----------------------------// 获取响应结果log.info("获取响应结果:"+prev.getResponseDataAsString()); log.info("获取响应结果: " + prev.getResponseMessage()); // 这个不是string类型的// 获取响应code (需要用int接收)log.info("获取响应code:",prev.getResponseCode());// 获取响应headerslog.info("获取响应headers:",prev.getRequestHeaders());// 获取响应Body大小prev.getBodySizeAsLong(); ----------------------------- 解决乱码 ----------------------------prev.setDataEncoding("utf-8");

重磅代码(场景是我需要记录接口响应的时间),

注意这段代码不能使用BeanShell PreProcessor ,
想你也知道啊,ResponseHeaders你在请求前你也拿不到啊 是不是

String backtim = prev.getResponseHeaders();String a= backtim.substring(backtim.indexOf("Fri")+4,backtim.indexOf("GMT")+3);  //每天都要变Date date = null;log.info("~~~~~~~"+c);try {
date = new SimpleDateFormat(" d MMM yyyy K:m:s z",Locale.ENGLISH).parse(a); } catch (ParseException e) {
// TODO Auto-generated catch block e.printStackTrace(); }SimpleDateFormat sf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String ti = sf2.format(date);log.info(ti);

转载地址:http://xirki.baihongyu.com/

你可能感兴趣的文章
assert用法
查看>>
堆与栈有什么区别?
查看>>
堆与栈有什么区别?
查看>>
操作系统:进程/线程同步的方式和…
查看>>
操作系统:进程/线程同步的方式和…
查看>>
Makefile的编写
查看>>
Makefile的编写
查看>>
C语言常用算法
查看>>
Linux设备驱动调试技术 2
查看>>
Linux设备驱动调试技术 3
查看>>
系统处理 IRQ_EINT0 IRQ_EIN…
查看>>
系统处理 IRQ_EINT0 IRQ_EIN…
查看>>
misc_register和register_ch…
查看>>
misc_register和register_ch…
查看>>
misc_register和register_ch…
查看>>
misc_register和register_ch…
查看>>
platform设备添加流程(转载)
查看>>
platform设备添加流程(转载)
查看>>
GCC编译关键字“__attribute_…
查看>>
GCC编译关键字“__attribute_…
查看>>