当前位置: 首页 > news >正文

jmeter 如何循环使用接口返回的多值?

有同学在用jmeter做接口测试的时候,经常会遇到这样一种情况:

就是一个接口请求返回了多个值,然后下一个接口想循环使用前一个接口的返回值。

这种要怎么做呢?

有一定基础的人,可能第一反应就是先提取前一个接口返回的所有值,然后再用一个循环控制器,循环使用值就可以了啊。

对,非常棒,思路清晰,完全正确,但是做起来真的就这么简单吗?

好,现在加大一点难度:我只想循环请求前一个接口返回值中的随机不定长度的某一些值(并不想用全部的)。

这样的,好做吗?

今天,我就和大家讲讲,这两种,我们如何实现。

第一种,如:有一个获取用户列表的接口,返回了所有的用户信息,接下来,我就想把所有用户都登录一遍。这种常见于企业中有一个获取商品列表的接口,就想验证下所有的商品详情信息是否都正常,是否存在无效商品。我们怎么做呢?

首先,在我们的获取用户信息列表接口,看下接口返回信息的类型和用户手机号码字段名称,如果返回类型时json的,我们就在下面增加一个后置处理器——json提取器或正则提取器,提取所有用户的手机号码信息。

图片

然后,我们再添加一个逻辑控制 > 循环控制器。因为获取的用户手机号码总数可能一直在变,不是一个固定值,所以,循环次数不能使用固定值。哪这个循环控制循环次数怎么配置呢?我们要使用上一步,json提取中变量名称加_matchNr这样的新变量。

图片

然后,在循环控制器下面挂上下一个接口。那此时又有个新问题了,有了循环次数,接口每次调用的时候,接口参数中手机号码如何自动更新值呢? 这个问题,有经验的同学,可能会第一反应说,加个计时器。

对,是个好办法。但是,我呢,比较懒,不想去再添加一个计时器配置元件,我就加个计时器函数。

图片

ok,万事俱备,只欠东风。run一下看下。

图片

图片

图片

看到了吗?总共有1000个手机号码,最后,汇总报告中,显示的总取样次数也是1000,说明我们的循环写法没有问题。

第二种,我们想随机抽取所有用户中的随意长度用户,常见于企业中商品数量比较多,随机抽检任意多个商品,验证商品详情是否正常。

这样的,我们该如何做呢?

第一步,依然是在获取用户列表接口下面添加后置处理器——json提取器或正则提取器。只是,这次我们的提取写法不一样了。

图片

第二步,依然是添加循环控制器,只是,又有一个新问题了,因为都是随机数,起始和终止值之间的差距不确定,循环次数也就不确定,哪这个循环次数如何设置呢? 这里我们引入一个intSum求和函数

图片

第三步,同第一种方法的第三步完全一样(有同学可能会问,为什么会完全一样呢?留个大家自学研究,动手验证)。

最后,我们也来run一下,看看我们的结果。

图片

图片

图片

图片

是不是‘碗豆腐’,完美!

好了,这样一个技巧,你是否已经get到了呢?


              【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图】


一、Python编程入门到精通

二、接口自动化项目实战  

三、Web自动化项目实战


四、App自动化项目实战  

五、一线大厂简历


六、测试开发DevOps体系  

七、常用自动化测试工具

八、JMeter性能测试  

九、总结(文末尾部小惊喜)

生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!

生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!

只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到! 

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

http://www.lryc.cn/news/262056.html

相关文章:

  • VLAN 详解一(VLAN 基本原理及 VLAN 划分原则)
  • Android - 分区存储 MediaStore、SAF
  • Shiro框架权限控制
  • centOS7 安装tailscale并启用子网路由
  • spring 项目中如何处理跨越cors问题
  • importlib --- import 的实现
  • 【PyTorch】现代卷积神经网络
  • 用python编写九九乘法表
  • Google Gemini 模型本地可视化
  • 数据修复:.BlackBit勒索病毒来袭,安全应对方法解析
  • 拓扑排序实现循环依赖判断 | 京东云技术团队
  • Java的NIO工作机制
  • 一个简单的光线追踪渲染器
  • C++学习笔记(十二)------is_a关系(继承关系)
  • DC电源模块的设计与制造技术创新
  • Sketch for Mac:实现你的创意绘图梦想的矢量绘图软件
  • ReactNative0.73发布,架构升级与更好的调试体验
  • SVN忽略文件的两种方式
  • 手写VUE后台管理系统10 - 封装Axios实现异常统一处理
  • JavaScript装饰者模式
  • C++学习笔记01
  • 【UE5】初识MetaHuman 创建虚拟角色
  • 物流实时数仓:数仓搭建(DWD)一
  • MATLAB安装
  • C语言——预处理详解(#define用法+注意事项)
  • Linux(23):Linux 核心编译与管理
  • Oracle RAC环境下redo log 文件的扩容
  • Java入门学习笔记一
  • 分布式块存储 ZBS 的自主研发之旅|元数据管理
  • 六大设计原则