📅  最后修改于: 2023-12-03 15:32:07.309000             🧑  作者: Mango
jMeter函数是jMeter中非常有用的一个功能。在测试过程中可能需要对请求参数进行一些加密、计算甚至是动态生成,这时候jMeter函数就派上用场了。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测试过程中必不可少的一个功能。掌握常用的内置函数可以让测试过程更加高效,而自定义函数能够满足更多的需求。