jmeter 二次开发---实现自定义函数插件

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;
    }

}
 

猜你喜欢

转载自www.cnblogs.com/111testing/p/10426576.html