25

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

我正在尝试创建一个 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)以及如何在采样器中引用它们?

4

4 回答 4

20

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

鉴于您有一组值,您可以:

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

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

于 2011-06-15T14:42:15.400 回答
19

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

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

例如:

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

    名称 值          
    类别 3,2,54,42,37
    

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

  • 使用 add BeanShell Sampler/PostProcessor 和以下代码:

    导入 java.util.Random;
    
    String[] categories = (vars.get("categories")).split(",");
    
    int idx = new Random().nextInt(categories.length);
    字符串类别 = (categories[idx]);
    
    vars.put("categoryId", category);
    
  • 在脚本中进一步参考随机选取的表单列表值作为${categoryId}.
于 2013-02-04T23:09:39.520 回答
16

要从列表中获取随机变量值,首先将列表或可用值声明为用户变量,并带有前缀和增量索引:

country_1     Spain 
country_2     France  
country_3     Portugal  
country_4     Italy 
country_5     England

然后,您可以从将前缀与间隔中的随机索引连接的列表中获取随机值:

${__V(country_${__Random(1,6,)})}  --> "Spain", "France", "Portugal", etc...

看看这个答案以获得完整的解释。

于 2015-12-11T17:45:29.347 回答
0

没有变量的最简单的解决方案可以使用vars.getIteration()

/test/foo.html?id=${__groovy(vars.getIteration())}
于 2017-09-11T10:36:31.353 回答