深圳幻海软件技术有限公司 欢迎您!

JMeter—如何循环使用接口返回的多个值

2023-02-28

在用JMeter做接口测试的时候,经常会遇到这样一种情况:一个接口请求返回了多个值,然后下一个接口想循环使用前一个接口的返回值;第二种情况:只想循环请求前一个接口返回值中的随机不定长度的某一些值(并不想用全部的)。今天,我就和大家讲解一下这两种情况的其中一个情况,我们如何用JMeter来实现的。先说

在用JMeter做接口测试的时候,经常会遇到这样一种情况:一个接口请求返回了多个值,然后下一个接口想循环使用前一个接口的返回值;第二种情况:只想循环请求前一个接口返回值中的随机不定长度的某一些值(并不想用全部的)。

今天,我就和大家讲解一下这两种情况的其中一个情况,我们如何用JMeter来实现的。

先说第一种情况:一个接口请求返回了多个值,然后下一个接口想循环使用前一个接口的返回值。

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

一:首先,在我们的获取文件信息列表接口,我们就在下面增加一个后置处理器——json提取器或正则提取器,提取所有fileVersion值。

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

三:在循环控制器下面添加print登录http请求。那此时又有个新问题了,有了循环次数,接口每次调用的时候,接口参数中手机号码如何自动更新值呢?我就加个计时器函数。当然,添加计时器也可以。userName的参数值写入${_v(mobilephone${_counter(,)})},其中,_v()为连接函数,mobilephone为json提取器生成的变量名称,“_”为连接符,${_counter(,)}为计数器函数。

四,添加察看结果树和汇总报告,点击运行,查看响应结果。

总共有174个ffileVersion,最后,汇总报告中,显示的总取样次数也是174,说明我们的循环写法没有问题。