近期在使用Jmeter编写个辅助测试的脚本,用到了多个Loop Controller和Counter。

当时想的思路就是三个可变的数量值,使用循环实现;但第三个可变值的数量次数,是基于第二次循环中得到的结果才能确认最终次数,每次的结果还会有不一样的情况。基于思路,先写了个线性脚本,实现如下所示:

但实际中,第三层循环,并没有按自己预期来实现,所以就想到了Counter计数器,将脚本中加入了Counter计数器,实现如下所示:

图中的数字说明:${for1}${for2}${for3}

${for1}是第一个循环器中的Counter变量名

${for2}是第二个循环器中的Counter变量名

${for3}是第三个循环器中的Counter变量名

从图中可以看出,${for3}是累加的,不会随着一次循环结束,计数自动重置。

我所想实现的是,第二层循环中的第一次获取的结果是5个数组,则从索引0 ~ 4依次按置执行第三层循环;第二层循环中的第二次获取的结果是8个数组,则从索引0 ~ 7依次按置执行第三层循环。

但这样操作下来,第二次是会直接从索引5开始执行,这样就会丢失一部分数据,显然不是自己所想的。

中途也试过很多错,都不能实现计数重置的功能。好在,某天想起了官方文档,这个功能在文档是有描述的,如下所示:

文档中描述的很清楚,可以使用${__jm__LC__idx}的方式实现index从0开始,其中LC为控制器的名称。

使用官网的文档,在脚本中加入变量使用,运行如下所示:

从图中可知,第三层循环的第四个数字就是我所想要的,终于解决了心中的问题。

图中的数字说明:${for1}${for2}${for3}_${resetForNumber}

前三个数字在之前已经说明过了,这里只说明下${resetForNumber},这个变量是通过BeanShell Sampler中获取的,因为将官网给出的方案写在了BeanShell Sampler种,代码如下所示:

long i=0;
i = ${__jm__Loop Controller3__idx};
vars.put("resetForNumber",String.valueOf(i));

虽然,描述起来很简单,但的确是实际脚本实现的过程中遇到的一个阻碍,好在问题解决了。

所以特整理此篇,希望对以后有需要的朋友有所帮助。

最新文章

  1. redis连接超时报错
  2. Reporting Service 配置SMTP和设置订阅出现的异常
  3. MFC----任务管理器的制作
  4. LeetCode Number of Connected Components in an Undirected Graph
  5. jsoup html采集器
  6. Web前端研发工程师编程能力飞升之路
  7. Javascript基础系列之(六)循环语句(do while循环)
  8. [BZOJ1177][Apio2009]Oil
  9. 【和小强学移动app测试2】移动终端app测试点归纳(持续更新)
  10. android内存泄露小谈
  11. Tomcat线程池,更符合大家想象的可扩展线程池
  12. location对象位置操作,进行跳转
  13. C#总结项目《影院售票系统》编写总结三
  14. lab1-Junit&Eclemma
  15. 理解oauth2.0【转载】
  16. R语言并行计算中的内存控制
  17. Struts标签库详解【3】
  18. JavaEE学习之Spring Security3.x——模拟数据库实现用户,权限,资源的管理
  19. 日志之环绕通知(AOP)
  20. 003 python中的内置函数

热门文章

  1. el-form-item label中的字体样式设置格式
  2. 数据结构中的哈希表(java实现)利用哈希表实现学生信息的存储
  3. JSP的内置对象 request和response
  4. python创建icon图标
  5. 【日志系统】Loki日志监控 - 入门初体验
  6. 笔记:Debian下为sublime text建立软链接[像vi一样到处使用]
  7. 现代 CSS 指南 -- at-rule 规则扫盲
  8. 死磕面试系列,Java到底是值传递还是引用传递?
  9. 2流高手速成记(之八):基于Sentinel实现微服务体系下的限流与熔断
  10. 😊SpringBoot 整合 Elasticsearch (超详细).md