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

}

猜你喜欢

转载自blog.csdn.net/WANGtesting/article/details/80583972