使用 JMeter 中值列表中的请求值

2022-09-01 16:53:55

我相信我过去已经这样做了,但不知何故,我无法弄清楚如何;-)所以,这是我的问题:

我正在尝试创建一个JUnit测试计划,其中通过更改特定参数来修改HTTP请求。因此,例如,在五次迭代中,我希望发出以下HTTP请求:

http://localhost:8080/test/foo.html?id=1
http://localhost:8080/test/foo.html?id=2
http://localhost:8080/test/foo.html?id=3
http://localhost:8080/test/foo.html?id=4
...

我想为测试计划全局配置标识符值,并在HTTP请求采样器中使用它们,如下所示:

Path: /test/foo.html?id=${categoryId}

现在的问题是:如何全局配置标识符值(我不想使用),以及如何在采样器中引用它们?StringFromFile


答案 1

有几种方法可以做到这一点。

假设您有一个值数组,您可以:

  • 尝试预处理器“用户参数”,为每个用户/循环创建一个条目
  • 使用Beanshell脚本创建数组,随机选择一个并填充变量

您可以完全按照列出的方式引用它们:${varName}


答案 2

关于实施.${__StringFromArrayAtRandomIndex('3', '2', '54', '42')}

假设您可以使用例如BeanShell Sampler / BeanShell PostProcessor和一些代码轻松实现您的场景。

例如:

  • 设置源变量(例如,通过用户定义的变量):

    Name        Value          
    categories  3,2,54,42,37
    

    (即使用逗号作为分隔符,逗号前后没有空格)。

  • 使用以下代码添加 BeanShell 采样器/后处理器:

    import java.util.Random;
    
    String[] categories = (vars.get("categories")).split(",");
    
    int idx = new Random().nextInt(categories.length);
    String category = (categories[idx]);
    
    vars.put("categoryId", category);
    
  • 在脚本中进一步引用随机选择的表单列表值作为 。${categoryId}