Jmeter自定义脚本
目录
log:输出类
Label:你自定义的组件的名称
FileName:添加的脚本文件的文件名
Parameters:你传入的参数,是一个字符串
args:你传入的参数,是一个数组
Parameters和args的异同:
OUT:输出类
props:封装的Java中的这个类java.util.Properties
sampler:用来获取取样器的内容(如:请求头、url、取样器内容……)
ctx:上下文信息
vars:用来处理与自定义变量有关的操作
如何查阅官方文档
注:本文以前置脚本为例
步骤:右击“HTTP取样器”-> 添加 -> 前置处理器 -> JSR223
也可以选择BeanShell:
但是推荐选择JSR223,因为官方推荐:
创建完成之后可以看到如下界面
JMeter也给我们提供了一些参数/类:
注:上面这个页面中的Filename该属性名有误,应该为FileName。
log:输出类
编写输出脚本
log.info("哈哈哈");
点击运行后脚本的输出结果需要在这里进行查看:
点击这个三角可以弹出控制台,里面会打印各种程序执行过程中的日志和脚本打印的东西
Label:你自定义的组件的名称
log.info("打印Label的值:"+Label)
FileName:添加的脚本文件的文件名
以下面这段代码为例
log.info("啦啦啦啦啦");
log.info(FileName);
log.info("kkkkk");
添加了脚本文件:
没有添加脚本文件:
注:一旦添加了脚本文件,那么在下方输入框中编写的脚本将不会被执行
Parameters:你传入的参数,是一个字符串
传参的位置在此处:
args:你传入的参数,是一个数组
传参的位置和Parameters相同。
如果需要传多个参数,参数与参数之间用英文空格分隔
Parameters和args的异同:
相同之处:
- 都可以接收用户自定义传入的参数(会将用户传入的所有字符当成一个字符串)。
不同之处:
- Parameters只能接收一个参数;
- args可以接收一个或多个参数,多个参数之间需要使用空格分隔
OUT:输出类
这个类是封装了java输出方法的一部分。可以将内容打印至控制台,而非GUI界面。
Java的输出方法:System.out.println(); 而OUT类封装了这段代码的前半部分,即System.out
OUT.println("hahaha");
props:封装的Java中的这个类java.util.Properties
理论上Properties类的方法都可以用
sampler:用来获取取样器的内容(如:请求头、url、取样器内容……)
注:sampler是一个接口,不是类,不是类。有多种实现方式。
如何看应该使用那个实现类的方法呢?最简单的办法就是随便乱写一个方法,然后看报错信息是那个类:
根据报错信息可以知道HTTP采样器使用的是org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy这个实现类,所以此时可以去官方文档查看这个实现类的方法。(文末有官方文档查阅方法)
获取请求参数:
import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase;
log.info(sampler.getArguments().toString());
获取请求头信息并打印
log.info(sampler.sample().getRequestHeaders());
获取url并打印出来:
log.info(sampler.sample().getUrlAsString());
获取取样器内容:
log.info(sampler.sample().getSamplerData());
ctx:上下文信息
vars:用来处理与自定义变量有关的操作
在jmeter中自定义变量使用‘${}’来获取取值。
修改取样器的参数:
设置变量:
vars.put("val", "笔记本电脑");
//打印请求参数
import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase;
log.info(sampler.getArguments().toString());
获取自定义变量:
vars.put("val", "笔记本电脑");
String a = vars.get("val");
log.info(a);
如何查阅官方文档
步骤:右击脚本组件 -> 帮助
点击帮助后会在浏览器中自动跳转至对应组件的官方文档。
跳转至此页面后往下滑动页面,可以看到这个
中间是方法名和参数配置,右边为对应方法的介绍,最左侧为方法的返回值类型。