JMeter接口测试-如何循环使用接口返回的多值?

时间:2024-01-26 11:32:07

前言

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

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

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

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

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

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

三:在循环控制器下面添加print登录http请求。那此时又有个新问题了,有了循环次数,接口每次调用的时候,接口参数中手机号码如何自动更新值呢?我就加个计时器函数。当然,添加计时器也可以。userName的参数值写入

${_v(mobilephone${_counter(,)})},其中,_v()为连接函数,mobilephone为json提取器生成的变量名称,“_”为连接符,${_counter(,)}为计数器函数

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

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

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

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

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

其中,intSum为求和函数,“-”为负号,就进行减法运算了,${stnum}为起始值,${rdnum}为终止值

三:在循环控制器下面添加print登录http请求。那此时又有个新问题了,有了循环次数,接口每次调用的时候,接口参数中手机号码如何自动更新值呢?我就加个计时器函数。当然,添加计时器也可以。userName的参数值写入

${_v(mobilephone${_counter(,)})},其中,_v()为连接函数,mobilephone为json提取器生成的变量名称,“_”为连接符,${_counter(,)}为计数器函数

四,添加察看结果树,点击运行,查看响应结果