我正在尝试使用beanshell预处理器在JMeter脚本中进行参数化。我的JMeter脚本结构如下所述。测试计划 - >线程组 - >事务控制器 - >请求。我想知道我应该遵循哪个程序来动态地将值传递给请求。
屏幕截图和示例说明会更有帮助。
提前致谢。
答案 0 :(得分:18)
尝试以下测试结构:
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预处理器中,我们定义了我们在HTTP Request Sampler中引用的RANDOM_NUMBER
变量值。预处理器正在执行之前请求,因此填充了变量。如果您添加View Results Tree侦听器,您会看到请求包含100-300范围内随机生成的数字
因此,您需要添加Beanshell Pre Processor作为您要进行参数化的请求的子项。
有关Beanshell脚本和小食谱的更多信息,请参阅How to use BeanShell: JMeter's favorite built-in component指南。
答案 1 :(得分:-1)
生成随机字符串:
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);