JMeter逻辑控制器之ForEach控制器

1. 背景

  前段时间在对某项目进行测试,存在一个需要遍历所有组织机构后给每个组织下新增部门的场景,其实也可以通过在数据库中直接添加数据这种方式来实现,但是有点风险,可能会生成脏数据,后期也不好排查,最好的方式的就是模拟从前端页面操作一样,所以就考虑到用JMeter实现。

2. 目的

  • 了解ForEach组件的基础功能;
  • 熟悉ForEach的使用场景;
  • 学会使用ForEach组件;

3. ForEach组件介绍

  ForEach 控制器循环访问一组相关变量的值。 将采样器(或控制器)添加到 ForEach 控制器时,每个样本(或控制器) 执行一次或多次,其中在每个循环中变量都有一个新值。 输入应由多个变量组成,每个变量都使用下划线和数字进行扩展。

  它特别适合与正则表达式后处理器一起运行。 这可以从前一个请求的结果数据中"创建"必要的输入变量。 通过省略""分隔符,可以使用 ForEach 控制器通过以下方式循环遍历组 输入变量refName_g,还可以遍历所有匹配项中的所有组 通过使用 refName ${C}_g 形式的输入变量,其中 C 是计数器变量。 (但是博主更倾向和JSON提取器_后置处理器配合使用)

组件面板

属性 描述 必填
名称 树中显示的此控制器的描述性名称
输入变量前缀 要用作输入的变量名称的前缀。默认为空字符串作为前缀。
循环的起始索引 循环变量的起始索引(不包括)(第一个元素位于起始索引 + 1)
循环的结束索引 循环变量的结束索引(包括)
输出变量 变量的名称,可在循环中使用,以便在采样器中进行替换。默认为空变量名称,这很可能是不需要的。
使用分隔符 如果未选中,则省略"_"分隔符。 是的
[#### 参数说明]

3. ForEach示例

  接口响应中返回的json数据格式中包含数组,且下一个接口需要调用的参数碰巧在数组中存在多个值,比如ID,orderNo等,则可以使用JSON Extractor提取多个值,然后用ForEach遍历参数进行赋值。

  本文以查询组织树下各个组织,提取组织id, 然后在每个组织下新建用户为例。

3.1 组织接口

  此id为组织机构

3.2 JSON提取器

通过JSON提取器获取组织机构ID,需要注意的是要获取所有的组织机构ID,具体实现如下所示:

JOSN提取器语法

3.2 ForEach控制器配置

  "输入前缀"是JSON提取器获取的变量值,"输出变量名称"的值是为了后续创建人员接口提供。

3.2 创建人员接口配置

  组织机构ID会遍历所有的ID。

3.2 结果

  大家可以看到,分别在4个组织下成功新建了人员。

相关推荐
岁月失语唯石能言2 天前
《 Web项目测试实战:博客系统的功能/接口/自动化/性能全流程测试报告》
自动化测试·功能测试·selenium·jmeter·接口测试·压力测试·性能测试
中国软件测试质量协会4 天前
国产性能测试工具:kylinPET高仿真与高并发性能测试技术深度解析——与JMeter、LoadRunner全面对比
测试工具·jmeter
拜托多多指教5 天前
【JMeter】外观设置(Mac)
jmeter
川石课堂软件测试12 天前
自动化测试常见的异常处理
python·jmeter·mysql·docker·容器·单元测试·grafana
wuhuhuan12 天前
JMeter 性能测试教程
jmeter
行者-全栈开发13 天前
JMeter + InfluxDB + Grafana:搭建生产级压测实时监控与告警体系
jmeter·grafana·时序数据库·influxdb·实时监控·backendlistener·告警性能测试
wuhuhuan13 天前
【JMeter 学习打卡 Day 7】从会用到会用对,完成一次完整压测
学习·jmeter
行者-全栈开发16 天前
JMeter 自定义 Sampler 开发:从零写 TCP 私有协议压测插件
jmeter·tcp协议·源码解析·插件开发·gradle构建·自定义sampler·abstractsampler
wuhuhuan16 天前
【JMeter 学习打卡 Day 5】控制流程和节奏的利器
学习·jmeter