我正在尝试使用 beanshell 预处理器在 JMeter 脚本中进行参数化。我的 JMeter 脚本结构如下所述。测试计划->线程组->事务控制器->请求。我想知道我应该遵循哪个过程来动态地将值传递给请求。
带有屏幕截图和示例的描述会更有帮助。
提前致谢。
我正在尝试使用 beanshell 预处理器在 JMeter 脚本中进行参数化。我的 JMeter 脚本结构如下所述。测试计划->线程组->事务控制器->请求。我想知道我应该遵循哪个过程来动态地将值传递给请求。
带有屏幕截图和示例的描述会更有帮助。
提前致谢。
试试下面的测试结构:
Beanshell 预处理器作为 HTTP 请求的子级,代码如下:
int min = Integer.parseInt(bsh.args[0]); // get first parameter
int max = Integer.parseInt(bsh.args[1]); // get second parameter
int random = min + (int) (Math.random() * ((max - min) + 1)); // calculate random number within parameters range
vars.put("RANDOM_NUMBER", String.valueOf(random)); // save result into RANDOM_NUMBER variable
并100 300
在“参数:部分
因此,在 Beanshell 预处理器中,我们定义RANDOM_NUMBER
了在 HTTP 请求采样器中引用的变量值。预处理器在请求之前执行,因此变量被填充。如果您添加查看结果树侦听器,您将看到请求包含 100-300 范围内的随机生成的数字
因此,您需要将 Beanshell 预处理器添加为要参数化的请求的子项。
有关 Beanshell 脚本和小食谱的更多信息,请参阅如何使用 BeanShell:JMeter 最喜欢的内置组件指南。
生成随机字符串:
import java.util.Random;
chars = "1234567890abcdefghiklmnopqrstuvwxyz-";
int string_length = 36;
randomstring ="";
for (int i=0; i < string_length; i++) {
Random randomGenerator = new Random();
int randomInt = randomGenerator.nextInt(chars.length());
randomstring += chars.substring(randomInt,randomInt+1);
}
print(randomstring);
vars.put("RANDOM_STRING",randomstring);