高级 JMeter 循环
Advanced JMeter Looping
假设我有一个 user-defined 参数 bodies
,它是一个任意长度的 space-delimited 列表。我需要根据 bodies
的长度创建一个 HTTP 请求循环并使用其内容。
例如,如果 bodies=a b c
,那么我需要在 header 中使用 a
发出一个 HTTP POST 请求,然后在另一个中使用 b
header,依此类推。
我如何在 JMeter 中执行此操作?到目前为止,我已经能够使用 JSR223 采样器设置变量 NUM_ITERATIONS
(在本例中为 3),但我不知道如何在每次迭代中使用正确的参数进行循环。
如果您可以控制 "bodies" 变量的外观,您可以将其转换成如下形式:
bodies_1=a
bodies_2=b
bodies_3=c
并使用ForEach Controller迭代所有元素。
可能的方法之一:
- 将循环控制器添加到您的线程组并将
${__groovy(vars.get('bodies').split(' ').size(),)}
表达式放入 "Loop Count" 节
- 添加 HTTP Request 采样器作为循环控制器的子项
- 添加 HTTP Header Manager 作为 HTTP 请求采样器的子项
将用户自定义参数的值引用为
${__groovy(vars.get('bodies').split(' ')[vars.get('__jm__Loop Controller__idx') as int],)}
需要的地方。
参考文献:
假设我有一个 user-defined 参数 bodies
,它是一个任意长度的 space-delimited 列表。我需要根据 bodies
的长度创建一个 HTTP 请求循环并使用其内容。
例如,如果 bodies=a b c
,那么我需要在 header 中使用 a
发出一个 HTTP POST 请求,然后在另一个中使用 b
header,依此类推。
我如何在 JMeter 中执行此操作?到目前为止,我已经能够使用 JSR223 采样器设置变量 NUM_ITERATIONS
(在本例中为 3),但我不知道如何在每次迭代中使用正确的参数进行循环。
如果您可以控制 "bodies" 变量的外观,您可以将其转换成如下形式:
bodies_1=a
bodies_2=b
bodies_3=c
并使用ForEach Controller迭代所有元素。
可能的方法之一:
- 将循环控制器添加到您的线程组并将
${__groovy(vars.get('bodies').split(' ').size(),)}
表达式放入 "Loop Count" 节 - 添加 HTTP Request 采样器作为循环控制器的子项
- 添加 HTTP Header Manager 作为 HTTP 请求采样器的子项
将用户自定义参数的值引用为
${__groovy(vars.get('bodies').split(' ')[vars.get('__jm__Loop Controller__idx') as int],)}
需要的地方。
参考文献: