暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

jmeter-自定义请求与自定义函数

坚果测试笔记 2021-06-29
876

一、自定义请求编写(java_sampler)

1.添加依赖ApacheJMeter_core、ApacheJMeter_java

2.编写功能类(见下方示例Hello.class)

3.编写java请求类(见下方示例JmeterTestHello.class),继承抽象类AbstractJavaSamplerClient,并实现方法runTest()

4.maven打包clean->package

5.把打包后的jar包到jmeter/lib/ext目录下

6.新增java请求使用

示例如下:

    public class Hello {
    public String hello(String name){
    return "hello"+name;
    }
    }
      public class JmeterTestHello extends AbstractJavaSamplerClient {
      public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
      SampleResult sampleResult = new SampleResult();
      sampleResult.sampleStart();
      //创建Hello对象,调用hello方法
      Hello hello = new Hello();
      //动态入参
      String username = javaSamplerContext.getParameter("username");
      String string = hello.hello(username);
      //设置返回信息、是否成功
      sampleResult.setResponseData(string,null);
      sampleResult.setSuccessful(true);


      sampleResult.sampleEnd();
      return sampleResult;
      }
      //设置默认入参字段与设置值
      @Override
      public Arguments getDefaultParameters() {
      Arguments args = new Arguments();
      args.addArgument("username","jianguo");
      return args;
      }
      }

      验证:


      二、自定义函数

      当jmeter函数助手提供的功能不满足测试使用时,对于对于经常使用的功能,可以自己写一个函数方便使用。

      1.添加pom依赖ApacheJMeter_functions

      2.新建包和类(包名必须是functions)

      3.继承抽象类AbstractFunction

      4.参照apache-jmeter-5.1.1\src\functions\org\apache\jmeter\functions的函数写代码(见下方示例)

      5.maven打包clean->package

      6.把打包后的jar包到jmeter/lib/ext目录下

      7.启动jmeter就可以使用该函数了

      示例如下:

        public class MyFunction extends AbstractFunction {
        private static final List<String> desc = new LinkedList<String>();
        private static final String KEY = "__MYFunction";
        private CompoundVariable var1;
        private CompoundVariable var2;
        //静态初始化
        static {
        desc.add("第一个参数");
        desc.add("第二个参数");
        }
        //无参构造
        public MyFunction() {
        }
        //根据入参,执行核心逻辑,保存结果至相应的变量中(示例为字符串去空格拼接)
        public String execute(SampleResult sampleResult, Sampler sampler) throws InvalidVariableException {
        String var1_ = var1.execute().trim();
        String var2_ = var2.execute().trim();
        return var1_+var2_;
        }
        //接收用户输入的参数值,放collection中
        public void setParameters(Collection<CompoundVariable> collection) throws InvalidVariableException {
        checkParameterCount(collection,2);
        Object[] objects = collection.toArray();
        var1 = (CompoundVariable) objects[0];
        var2 = (CompoundVariable) objects[1];
        }
        //函数助手对话框中的下拉框中显示的函数名称
        public String getReferenceKey() {
        return KEY;
        }
        //参数描述,有几个参数,就几个描述
        public List<String> getArgumentDesc() {
        return desc;
        }
        }

        结果验证:



        文章转载自坚果测试笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论