Jmeter二次開發函式 - 文字替換

dabeen發表於2024-07-31

此篇文章將在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函式使用效果

相關文章