jmeter本身带有很多内带的函数,功能很强大,但是更强大的是,jmeter还可以扩展,让用户自定义函数。
下面来看下自定义函数是怎么做的。
需要在org.apache.jmeter.functions包中,添加我们的自定义函数,函数模板如下:
package org.fast.jmeter.functions;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.samplers.Sampler;
public class myFunction extends AbstractFunction{
@Override
public String execute(SampleResult result, Sampler sampler) throws InvalidVariableException{
return "jmeter函数";
}
@Override
public void setParameters(Collection<CompoundVariable> collection) throws InvalidVariableException{
checkParameterCount(collection,0,0);
}
@Override
public String getReferenceKey()
{
return "__NewFunction";
}
@Override
public List<String> getArgumentDesc()
{
return desc;
}
}
对以上代码按照自己的需求重构并打成jar包
package org.fast.jmeter.functions;
import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.functions.AbstractFunction;
import org.apache.jmeter.functions.InvalidVariableFunction;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.samplers.Sample;
import org.fast.jmeter.functions.RandomString;
import java.util.LinkedList;
import java.util.Collection;
import java.util.List;
@SuppressWarnings("unchecked")
public class RandomMail extends AbstractFunction{
@Override
public String execute(SampleResult result, Sampler sample) throws InvalidVariableException{
...
}
@Override
public void setParameters(Collection<CompoundVariable> collection) throws InvalidVariableException{
checkParameterCount(collection,0,0);
}
@Override
public String getReferencKey()
{
return "__NewFunction";
}
public String getArgumentDesc()
{
return new LinkedList();
}
接下来把打包好的jar包放到${jmeter_home}/lib/ext目录下,重启jmeter,打开函数助手,可以看到有RandomMail这个函数在列。
这样自定义函数就做好了。