Jmeter二次开发之自定义函数

一、项目创建

使用Idea创建一个maven项目,maven模板选择空白,点击next直到项目创建成功
在这里插入图片描述

二、引入相关jar包

在工程的pom.xml文件中,引入jmeter二次开发所需要的jar包
在这里插入图片描述

    <dependencies>

        <dependency>
            <groupId>org.apache.jmeter</groupId>
            <artifactId>ApacheJMeter_core</artifactId>
            <version>5.4.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.jmeter</groupId>
            <artifactId>ApacheJMeter_java</artifactId>
            <version>5.4.1</version>
        </dependency>

    </dependencies>

三、快速开始

1、创建包名

在src/main/java 路径下创建包名为com.apache.jmeter.functions 包名前面可以随便取,但是结尾必须已functions结尾,否则无法被jmeter识别。

2、创建Java类

在functions包下创建一个Java类,名字可以随便取(尽量见名知意,遵守Java类驼峰命名规范),并继承AbstractFunction类,实现其execute、setParameters、getReferenceKey、getArgumentDesc 4个方法
在这里插入图片描述

3、方法介绍

execute方法: 核心方法,执行的核心逻辑全部写在该方法中

setParameters: 该方法用来接收和处理用户调该函数时所传递的参数值,如果定义的函数没有参数,则该方法可以为空

getReferenceKey: 该方法用于获取函数名称

getArgumentDesc: 该方法用于定义函数的参数,并且会将参数描述显示在GUI界面中

4、实例讲解

package com.apache.jmeter.functions;

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;

import java.util.Collection;
import java.util.LinkedList;
import java.util.List;

/**
 * Created by YangWeiMin on 2021/10/18
 */
public class CalcGenerator extends AbstractFunction {

    private static final String KEY = "__calc";

    // 自定义函数的参数及其参数列表说明
    private static final List<String> params = new LinkedList<>();

    // 通过此add方法可以添加多个参数
    static {
        params.add("请输入计算类型, add或者minus");
        params.add("请输入第一个数");
        params.add("请输入第二个数");
    }

    // 定义全局变量用于接收参数值
    public int x;
    public int y;
    public String type = "";

    @Override
    public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException {
        if (type.equals("add")) {
            return String.valueOf(x + y);
        }
        if (type.equals("minus")) {
            return String.valueOf(x - y);
        }
        return "计算类型异常,请重新输入";
    }

    @Override
    public void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException {
        checkMinParameterCount(parameters, 3); // 检测用户在调用该函数时所传参数最少是否为3个
        Object[] values = parameters.toArray(); // 定义一个数组values用来存储用户的参数
        type = ((CompoundVariable) values[0]).execute();
        x = Integer.parseInt(((CompoundVariable) values[1]).execute());
        y = Integer.parseInt(((CompoundVariable) values[2]).execute());

    }

    @Override
    public String getReferenceKey() {
        return KEY;
    }

    @Override
    public List<String> getArgumentDesc() {
        return params;
    }
}

其中定义了全局变量KEY,该变量的作用是定义函数的名字,该KEY在getReferenceKey方法进行返回即可

定义全局变量params,设置函数所需要的参数用于展示在jmeter中,该部分写在static 静态代码块中,并在getArgumentDesc中进行返回即可

5、编译打包

自定义函数的具体实现逻辑写好以后,可以通过Idea中的maven工具进行打包,双击verify即可打包,打包成功后,会在target目录中看到生成的jar包
在这里插入图片描述
在这里插入图片描述

5、上传Jmeter并使用

将打好的jar包放入到jmeter下 lib\ext目录中,放好以后,打开jmeter工具,选择函数助手,找到自定义编写的函数名,即可使用
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值