jmeter 二次开发---实现自定义函数插件
2019-02-24 16:19 清风软件测试开发 阅读(2455) 评论(0) 编辑 收藏 举报1.前提:
有时候,Jmeter自带的函数,可能不能满足于业务的需求,这时候,我们可以自己写一个函数插件;
2.创建maven工程
一直next,输入GroupID,ArtifactId->finsh
3.编辑pom.xml
创建好maven工程后,引入Jmeter的jar包,注意你本地Jmeter版本是几,这里<version></version>就写几
<dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_core</artifactId> <version>3.3</version> </dependency> <dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_java</artifactId> <version>3.3</version> </dependency>
4.创建一个package
实现扩展jmeterfunction,主要有两点:
1.实现function的类的package声明必须包含".functions"
2.需要继承org.apache.jmeter.functions.AbstractFunction,并且实现相应的方法
5.扩展类AbstractFunction讲解
public List<String> getArgumentDesc()
功能描述:顾名思义描述你写的这个方法是干嘛使的。
public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException
需要实现什么功能。
public String getReferenceKey()
返回function名称
public void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException
设置参数,接收用户传递的参数
5.代码讲解
public class TicketNo extends AbstractFunction{ //添加方法描述 private static final List<String> desc = new LinkedList<String>(); static { desc.add("ticketNo"); } //function名称 private static final String KEY = "__JddTicketNo"; private static final int num = 1; //传入参数的值 private Object[] values; private Date data =new Date(); /**功能描述**/ public List<String> getArgumentDesc() { // TODO Auto-generated method stub return desc; } @Override public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { try { Thread.sleep(1000); String ticket = String.valueOf(data.getTime()) System.out.println("当前输出"+ticket); return ticket; } catch (InterruptedException e) { // TODO Auto-generated catch block throw new InvalidVariableException(e); } } /** * 设置参数。接收用户传递的参数 * @param collection * @throws InvalidVariableException * **/ @Override public void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException { checkParameterCount(parameters, num); values = parameters.toArray(); } /**返回function名称**/ @Override public String getReferenceKey() { return KEY; } }