美文网首页
如何实现Jmeter自定义函数

如何实现Jmeter自定义函数

作者: 无昵称啊 | 来源:发表于2022-01-15 15:28 被阅读0次

    预置条件

    1、开发工具

    IntelliJ IDEA

    2、依赖库

    ApacheJMeter_core.jar
    ApacheJMeter_java.jar
    (存在于apache-jmeter-x.x.x\lib\ext目录下,将两文件复制到jdk1.8.0_xxx\jre\lib\extj目录下)

    实现步骤

    1、打开IntelliJ,新建1个Maven项目
    Maven项目
    2、在src/main/java目录下新增1个com.jmeter.functions目录,再在com.jmeter.functions下新增1个java文件
    3、可参考源码:https://github.com/apache/jmeter/blob/master/src/functions/src/main/java/org/apache/jmeter/functions下java文件,来编写自定义函数。以下是我个人实现的自定义函数。
    package com.jmeter.functions;
    import java.lang.String;
    import java.util.Collection;
    import java.util.LinkedList;
    import java.util.List;
    import org.apache.jmeter.engine.util.CompoundVariable;
    import org.apache.jmeter.functions.AbstractFunction;
    import org.apache.jmeter.functions.InvalidVariableException;
    import org.apache.jmeter.samplers.SampleResult;
    import org.apache.jmeter.samplers.Sampler;
    
    public class APIAuthextends AbstractFunction {
        //自定义function的参数名称
        private static final List<String> args =new LinkedList<>();
        //function名称
        private static final String KEY ="__getAuth";
        private static final int MAX_PARA_COUNT =3;//参数最多3个
        private static final int MIN_PARA_COUNT =2;//参数最少2个
        static {
            //通过add方法可以添一个参数
            //需添加多个参数时,多次调用即可添加多个参数
            args.add("AppKey");
            args.add("AppSecret");
            args.add("Type");
        }
        
        public APIAuth() {    }
    
        //传入参数的值
        private Object[] values;
        @Override
        public List getArgumentDesc() {
            return args;
        }
        @Override
        public String execute(SampleResult previousResult, Sampler currentSampler)throws InvalidVariableException {
            try {
                String userName = ((CompoundVariable)values[0]).execute();
                String secret = ((CompoundVariable)values[1]).execute();
                String type = ((CompoundVariable)values[2]).execute();
                return getAuth(userName, secret, type);
            }catch(Exception ex) {
                throw new InvalidVariableException(ex);
            }
        }
    
        @Override
        public String getReferenceKey() {
            return KEY;//方法名称
        }
    
        private String getAuth(String userName, String secret, String type){
            //Write Your Code
        }
    
        @Override
        public void setParameters(Collection parameters)throws InvalidVariableException {
            checkParameterCount(parameters,MIN_PARA_COUNT,MAX_PARA_COUNT); //检查参数的个数是否正确
            values = parameters.toArray(); //将值存入类变量中
        }
    }
    
    4、生成jar包

    a. File->Project Structure ->Artifaces ->"+" ->JAR->From modules with dependencies...,最后点"ok"。

    b. Build ->Build Artifacts,最后点击Build。默认out目录下会存在一个jar包

    5、使用Jar包,将jar包放在jmeter根目录lib\ext路径下,重新启动jmeter。进入函数助手,找到自定义的函数即可调用。

    相关文章

      网友评论

          本文标题:如何实现Jmeter自定义函数

          本文链接:https://www.haomeiwen.com/subject/guithrtx.html