📜  jMeter-函数(1)

📅  最后修改于: 2023-12-03 15:32:07.309000             🧑  作者: Mango

jMeter-函数介绍

jMeter函数是jMeter中非常有用的一个功能。在测试过程中可能需要对请求参数进行一些加密、计算甚至是动态生成,这时候jMeter函数就派上用场了。jMeter提供了很多内置的函数,同时也支持自定义函数。

jMeter内置函数

jMeter内置函数有很多,下面列出一些常用的函数。

  • ${__Random(1,10)} 生成随机整数,范围为1-10
  • ${__time()} 获取系统时间(毫秒数)
  • ${__P(paramName)} 获取jMeter运行时参数
  • ${__counter(TRUE,counter_var)} 返回一个递增的整数,变量名为counter_var
  • ${__urlencode(abc)} 对字符串进行url编码
  • ${__property(propName,defaultVal)} 获取jMeter属性,如果不存在则返回默认值

除此之外,还有很多其它的内置函数,可通过官方文档查看。

jMeter自定义函数

jMeter还支持自定义函数。自定义函数定义在一个编写的jar包中,通过在jMeter的user.properties文件中配置即可。下面是一个简单的自定义函数示例:

package com.example.jmeter;

import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.functions.AbstractFunction;
import org.apache.jmeter.functions.InvalidVariableException;

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

public class RandomString extends AbstractFunction {

    private static final List<String> desc = new LinkedList<>();
    private static final String KEY = "__RandomString";

    static {
        desc.add("生成一个指定长度的随机字符串");
        desc.add("字符串长度");
        desc.add("可选参数:是否包含数字");
    }

    private Object[] values;

    public RandomString() {
    }

    @Override
    public String execute(CompoundVariable[] values) throws InvalidVariableException {
        int length = Integer.parseInt(values[0].execute());
        boolean containsDigit = values.length > 1 && Boolean.parseBoolean(values[1].execute());
        String chars = "abcdefghijklmnopqrstuvwxyz";
        if (containsDigit) {
            chars += "0123456789";
        }
        StringBuilder builder = new StringBuilder();
        Random random = new Random();
        for (int i = 0; i < length; i++) {
            builder.append(chars.charAt(random.nextInt(chars.length())));
        }
        return builder.toString();
    }

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

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

    @Override
    public void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException {
        checkParameterCount(parameters, 1, 2);
        values = parameters.toArray();
    }
}

在user.properties文件中配置:

function.definition=__
RandomString=com.example.jmeter.RandomString

然后就可以在jMeter中使用该函数了:

${__RandomString(10,true)}

该函数可以生成10位的随机字符串,包括数字。自定义函数的编写可以使jMeter的功能更加强大,方便测试人员的工作。

总结

jMeter函数是jMeter测试过程中必不可少的一个功能。掌握常用的内置函数可以让测试过程更加高效,而自定义函数能够满足更多的需求。