Jmeter二次开发函数 - 补齐文本至指定长度

此篇文章将在Jmeter创建一个新函数,实现补齐文本至指定长度功能。效果图如下

 

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

2、新建class命名为“FixStringLenFunction”,并继承jmeter自带的AbstractFunction

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

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

package org.apache.jmeter.functions;
import java.util.Collection;
import java.util.List;
import java.util.LinkedList;
import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.samplers.Sampler;

public class FixStringLenFunction extends AbstractFunction {
    private final static String key="__FixTextLen";
    private static List<String> strParams=new LinkedList<String>();
    static
    {
        strParams.add("原始文本(必填)");
        strParams.add("补齐方式(默认左端补齐,支持left right)");
        strParams.add("用于补齐的文本(必填)");
        strParams.add("总长度(必填)");
    }
    public String originalText="";
    public String complementMode="";
    public String paddText="";
    public String totalLen="";
    
    @Override
    public List<String> getArgumentDesc() {
        return strParams;
    }

    @Override
    public String execute(SampleResult arg0, Sampler arg1) throws InvalidVariableException {
        String result="";
        int PaddLen=Integer.parseInt(totalLen)-originalText.length();
        if (PaddLen>0){
            int i=1;
            String paddStr="";
            while(true){
                for (int j=0;j<paddText.length();j++){
                    paddStr=paddStr+paddText.charAt(j);
                    i++;
                    if (i>PaddLen){
                        break;
                    }
                }
                if (i>PaddLen){
                    break;
                }
            }
            if (complementMode.equals("left")){
                result=paddStr+originalText;
            }else if (complementMode.equals("right")){
                result=originalText+paddStr;
            }else{
                result=paddStr+originalText;
            }
        }else if (PaddLen<1){
            result=originalText;
        }
        return result;
    }

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

    @Override
    public void setParameters(Collection<CompoundVariable> arg0) throws InvalidVariableException {
        // TODO Auto-generated method stub
        checkParameterCount(arg0,4);
        Object[] data=arg0.toArray();
        originalText=((CompoundVariable)data[0]).execute();
        complementMode=((CompoundVariable)data[1]).execute();
        paddText=((CompoundVariable)data[2]).execute();
        totalLen=((CompoundVariable)data[3]).execute();
    }
}

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

选择java->JAR file,点击next

保存到桌面FixStringLenFunction.jar

6、将生成的FixStringLenFunction.jar包拷贝到jmeter安装目录下\apache-jmeter-5.5\lib\ext\

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

查看FixTextLen函数有4个参数

8、FixTextLen函数使用效果

 

posted @ 2024-07-31 11:31  dabeen  阅读(13)  评论(0编辑  收藏  举报