jmeter插件开发后置处理器

12 篇文章 2 订阅

        Jmeter具有强大的功能实现以及功能扩展,熟悉JAVA的可以进行二次开发,做一些可插拔式的插件,更加完善我们的测试工作。

        项目中很多时候会遇到,需要我们保存在测试过程中生成的一些数据,一种简单的方法就是,添加Beanshell后置处理器,写输出的代码,这个之前的文章也有提到过:Jmeter输出结果到文件_社会小刚哥的博客-CSDN博客,代码很简单,有需要的可以参考。

        今天介绍的是,自己去做出来一个用于输出的后置处理器,也是需要用到两个jmeter的jar包:ApacheJmeter_core.jar,ApacheJmeter_java.jar。后置处理器需要我们创建固定的包名org.apache.jmeter.extractor;新建class继承AbstractTestElement类。

       先来看代码实现:

package org.apache.jmeter.extractor;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

import org.apache.jmeter.processor.PostProcessor;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.testbeans.TestBean;
import org.apache.jmeter.testelement.AbstractTestElement;

public class OutputPostProcessor extends AbstractTestElement implements PostProcessor, TestBean {

	private static final long serialVersionUID = 260L;
	private String path;
	
	@Override
	public void process() {
		SampleResult sr = new SampleResult();
		sr.setSampleLabel(getName());
		sr.sampleStart();
		
		try {
			
			FileWriter  filename = new FileWriter(path,true);
			BufferedWriter out = new BufferedWriter(filename);
			out.write(sr+"\n");
			out.close();
			filename.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}


	public void setPath(String  path) {
		this.path = path;
	}

	public String getPath() {
		return path;
	}
	

}

         这里实现的比较偷懒,因为jmeter调试取样器的特性,直接在名称处写入${param},运行测试就可以得到我们需要的数据,所以直接使用jmeter官方获取的这个代码:

SampleResult sr = new SampleResult();
sr.setSampleLabel(getName());
sr.sampleStart();

        有了需要输出的数据,在添加一个可以指定的路径就可以,这个是添加了一个String类型的path,并构造set、get方法。

private String path;

public void setPath(String  path) {
	this.path = path;
}

public String getPath() {
	return path;
}

        很简单对吧,这样用于输出的后置处理器就完成了,接下来打包放入jmeter/lib/ext目录,来看看效果,添加后置处理器就可以看到OutputPostProcessor了。

         再来实际测试用一下这个组件,运行四遍测试请求一下百度,并使用正则提取器获取三个参数值,多个值使用逗号隔开,输出到指定文件。

         可以说是一个比较实用的插件了,当然仅供参考,还有很多不足的地方,可以自行完善,比如输出时可以定义好标题头,然后忽略首行。不嫌麻烦的可以自己提前新建好CSV文件,写好标题头,输出时会自动忽略首行,多次输出不会覆盖之前的结果。

         学废了吗,以后输出数据到文件就不用写Beanshell代码了,直接使用Output后置处理器吧,觉得有用的就点个赞吧!可以上我的主页直接下载jar包使用。

        相互学习,共同进步!

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

社会小刚哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值