Jmeter二次开发函数 - 文本替换

此篇文章将在Jmeter创建一个新函数,实现替换文本中的指定内容功能。效果图如下

1、eclipse项目创建步骤此处省略,可参考上一篇Jmeter二次开发函数之入门

2、新建class命名为"TextReplaceFunction",并继承jmeter自带的AbstractFunction

3、新生成文件TextReplaceFunction.java继承jmeter的AbstractFunction带出4个方法,函数开发就是在这4个方法上改造

4、TextReplaceFunction.java,功能实现的完整代码如下

复制代码
package org.apache.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 TextReplaceFunction extends AbstractFunction {
    private final static String key="__TextReplace";
    private static List<String> strParams=new LinkedList<String>();
    static
    {
        strParams.add("原始文本(必填)");
        strParams.add("被替换内容(必填)");
        strParams.add("替换为(必填)");
    }
    public String originalText="";
    public String text="";
    public String ReplaceText="";
    
    @Override
    public List<String> getArgumentDesc() {
        return strParams;
    }

    @Override
    public String execute(SampleResult arg0, Sampler arg1) throws InvalidVariableException {
        String result = originalText.replaceAll(text, ReplaceText);
        return result;
    }

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

    @Override
    public void setParameters(Collection<CompoundVariable> arg0) throws InvalidVariableException {
        checkParameterCount(arg0,3);
        Object[] data=arg0.toArray();
        originalText=((CompoundVariable)data[0]).execute();
        text=((CompoundVariable)data[1]).execute();
        ReplaceText=((CompoundVariable)data[2]).execute();
    }
}

5、TextReplaceFunction.java文件右键导出jar包

选择java->JAR file,点击next

保存到jmeter安装目录下\apache-jmeter-5.5\lib\ext\TextReplaceFunction.jar

6、重启jmeter,打开函数助手就能看到多了一个TextReplace函数

查看TextReplace函数有3个参数

7、TextReplace函数使用效果