JMeter接口测试-如何循环使用接口返回的多值?
前言
在用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(,)}为计数器函数

四,添加察看结果树,点击运行,查看响应结果
JMeter接口测试-如何循环使用接口返回的多值?的更多相关文章
- Python接口测试(第一个接口返回的数据作为第二个参数的入参)
python代码如下 import requests url1="http://localhost:8080/pinter/com/getSku?id=1" respon=requ ...
- Jmeter接口测试使用beanshell断言json返回
一般情况下响应断言就能解决很多问题,但是返回复杂的json时就需要用到beanshell断言. 举个例子 免费的接口API www.sojson.com/api/beian/sojson.com ho ...
- JMeter接口返回数组键值对校验方法
$.data.tourRecommend[?(@.title=="产品特色")].type
- Jmeter接口测试实战-数据传递
Jmeter接口测试实战-数据传递 接口与接口之间没有关联的测试是缺乏意义和没有灵魂的,只有数据在不同接口之间传递才能勾画出业务场景重要的链路. 我们用较为通用的http/https协议,接口普遍返回 ...
- httprunner学习3-extract提取token值参数关联(上个接口返回的token,传给下个接口请求参数)
前言 如何将上个接口的返回token,传给下个接口当做请求参数?这是最常见的一个问题了. 解决这个问题其实很简单,我们只需取出token值,设置为一个中间变量a,下个接口传这个变量a就可以了.那么接下 ...
- nginx访问日志中添加接口返回值
因为nginx作为web服务器时,会代理后端的一些接口,这时访问日志中只能记录访问接口的status码,也就是说,只能获得200.404 这些的值 那么如何获得接口返回的response值呢? 下面开 ...
- jmeter使用问题——将接口返回变量存储成csv文件
在使用jmeter做接口测试时,一整个jmx测试计划中,存在多个线程,多个接口的测试 但是接口可以分类,比如业务接口.查询接口.更新接口等 考虑自动化接口测试一般都是一次性的,有完整的闭环链路,一般步 ...
- 通过Jenkins跑Jmeter接口测试脚本,我想当有接口跑失败时Jenkins发送邮件通知,这个如何弄呢
通过Jenkins跑Jmeter接口测试脚本,我想当有接口跑失败时Jenkins发送邮件通知,这个如何弄呢
- jmeter数据库查询与接口返回进行对比
今天在群里又看到了一个小伙伴问类似的问题,[jmeter如何实现数据库查询出来的结果与接口返回的结果进行对比判断,或者数据库两字段的相加减与接口返回进行对比].其实都一样,因为你把运算放在查询那里就行 ...
随机推荐
- Java同步与异步
一.关键字: thread(线程).thread-safe(线程安全).intercurrent(并发的) synchronized(同步的).asynchronized(异步的). volatile ...
- cocos2dx,Layer锚点与scale缩放
最近写代码需要用到缩放,而且是Layer的,但是发现怎么设置位置都是错误,于是决定研究下. 首先,基础代码,代码上不错特殊处理,没有锚点设置和缩放 class TestLayer : public L ...
- 程序员你为什么这么累【三】:编码习惯之Controller规范
作者:晓风轻本文转载自:https://zhuanlan.zhihu.com/p/28717374 第一篇文章中,我贴了2段代码,第一个是原生态的,第2段是我指定了接口定义规范,使用AOP技术之后最终 ...
- Python中类属性和实例属性的区别
在Python中经常会混淆类属性和实例属性的概念,今天专门记录一下个人理解以免日后忘记. 看下面的例子: class Tencent(): i = 10 # 此处i为类属性 def __init__( ...
- Oracle 数据泵(IMPDP/EXPDP)导入导出总结
Oracle数据泵导入导出是日常工作中常用的基本技术之一,它相对传统的逻辑导入导出要高效,这种特性更适合数据库对象数量巨大的情形,因为我日常运维的数据库对象少则几千,多则几万甚至几十万,所以传统exp ...
- Visual Studio Code | 报错 command 'markdown.extension.onBackspaceKey' not found
背景 今天使用Visual Strudio Code想用键盘Back去删除一些字符,发现报如下错误: command 'markdown.extension.onBackspaceKey' not f ...
- vue2.x中子组件修改父组件通过pops传递过来的值
首先,父组件向子组件传值 这里面主要是在传值的时候,加上.sync 然后子组件通过 $emit 修改 如此即可完成对父组件的数据操作
- Linux学习笔记-Centos7搭建owncloud私有云盘
使用环境:虚拟机centos7 1.下载安装LAMP相关软件 [root@localhost yum.repos.d]# yum install httpd –y [root@localhost yu ...
- 我的一个react路由之旅(步骤及详图)
今天开始react一个重要部分的xiao~习,路由~(过程截图,最后附代码) 以下代码只能骗糊涂蛋子,没错,就是我自己,不要打算让我敲出多高级的东西~ 理论性知识几乎没有,请不要打算让我给你说原理啥的 ...
- Android触摸事件传递机制,这一篇就够了
整个触摸事件牵涉到的是,Activity,View,ViewGroup三者的传递机制. 这个触摸事件就是从外层往内层一层层的传递. 整个传递机制,分为3个步骤:分发,拦截,和消费. 1. 触摸事件的类 ...