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

per*_*ian 18 java testing web-testing jmeter

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

我正在尝试创建一个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
...
Run Code Online (Sandbox Code Playgroud)

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

Path: /test/foo.html?id=${categoryId}
Run Code Online (Sandbox Code Playgroud)

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

Bla*_*aff 18

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

鉴于您有一系列值,您可以:

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

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

  • 我知道计数器,但是标识符不是连续的(即3323、5512、2345等)。我也不想从外部文件中读取内容,而是简单地使用类似$ {__ StringFromArrayAtRandomindex('3','2','54','42')} (2认同)

Ali*_*lik 17

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

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

例如:

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

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

    (即使用逗号作为分隔符,逗号前后不能有空格).

  • 使用以下代码添加BeanShell Sampler/PostProcessor:

    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}.


Ale*_*uti 7

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

country_1     Spain 
country_2     France  
country_3     Portugal  
country_4     Italy 
country_5     England
Run Code Online (Sandbox Code Playgroud)

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

${__V(country_${__Random(1,6,)})}  --> "Spain", "France", "Portugal", etc...
Run Code Online (Sandbox Code Playgroud)

请仔细阅读此答案以获得完整说明.