首页 文章

Beanshell预处理器在JMeter中的参数化使用

提问于
浏览
3

我试图在JMeter脚本中使用beanshell预处理器进行参数化 . 我的JMeter脚本结构如下所述 . 测试计划 - >线程组 - >事务控制器 - >请求 . 我想知道我应该遵循哪个程序来动态地将值传递给请求 .

屏幕截图和示例的描述将更有帮助 .

提前致谢 .

2 回答

  • 17

    尝试以下测试结构:

    • 线程组(所有默认值)1个用户,1秒加速,1个循环)

    • HTTP请求(参见下面的参数)

    http request details

    • Beanshell预处理器 as a child of HTTP Request ,代码如下:
    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 Pre Processor

    因此,在Beanshell预处理器中,我们定义了 RANDOM_NUMBER 变量值,我们在HTTP Request Sampler中引用它 . 正在执行预处理器 before 请求,因此变量将被填充 . 如果添加View Results Tree listener,您将看到请求包含100-300范围内随机生成的数字

    SERP

    因此,您需要添加Beanshell预处理器作为您要进行参数化的请求的子项 .

    有关Beanshell脚本和小食谱的更多信息,请参阅How to use BeanShell: JMeter's favorite built-in component指南 .

  • -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);
    

相关问题