JMeter-前置处理器
前置处理器
在sampler 执行之前用来修改sampler的,无法直接被“察看结果树”记录
1. BeanShell PreProcessor
使用BeanShell在请求进行之前进行操作。语法使用与BeanShell Sampler是一样的。但可使用的内置变量稍有不同
在线程组中添加2个请求,在HTTP请求2 中添加BeanShell PreProcessor,代码如上图,最终运行结果:
- vars:操作Jmeter变量
a) vars.get(“name”):从jmeter中获得变量值
b) vars.put(“key”,”value”):保存数据到jmeter变量中,如果变量不存在会自动创建 - props: 操作Jmeter属性
a) props.get(“START.HMS”); 注:START.HMS为属性名
b) props.put(“PROP1”,”1234”); 保存数据到Jmeter属性中,如果属性不存在会自动创建 - log: 记录日志
比如log.info(“日志信息”); 具体查看: https://www.slf4j.org/api/org/slf4j/Logger.html - ctx: 操作上下文,具体查看:
http://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterContext.html - prev: 操作前一个请求。注意必须有前一个请求才可用,否则会报错,具体查看:
http://jmeter.apache.org/api/org/apache/jmeter/samplers/SampleResult.html - sampler: 操作当前请求。具体查看:
http://jmeter.apache.org/api/org/apache/jmeter/samplers/Sampler.html
2. JDBC PreProcessor
在请求运行之前进行数据库操作。
使用方法与JDBC Request 是一样的。
应用场景,比如在修改用户信息,需要知道用户在修改前的信息,可以使用JDBC PreProcessor进行查询
3. 用户参数
可以让变量在每个线程中分别使用不同的值。
在多线程测试中可以用到。比如创建用户,用户名不能重复,但要使用多线程进行测试,这时可以用到。
比如,添加一个线程组,线程数设置为2,添加一个“用户参数”(上图),再添加一个BeanShell Sampler来获取用户名(打印到日志)
结果,2个线程分别得到不同的name
用户_1: xiaoming,线程1使用的变量
用户_2: xiaohong,线程2使用的变量