在使用jmeter做接口测试过程中,我们往往会遇到下面这种情况:一个接口返回的Response中,存在多组参数类型相同的数据,每一组数据都是有关联关系的,如下截图中所示,某个接口返回的Response中,都包含额以id、machineTypeName、machineTypeCode这三个字段组成的json串,这三个字段都是有一定的内部逻辑关系的,都是一一对应的(在数据库中,某个machineTypeCode一定对应的是唯一的id、machineTypeName)
现在我们需要将每一组(即每一组都包含id、machineTypeName、machineTypeCode)返回值取出来存在一个变量中(这个变量名我们命名为:machineTypeCode_id_machineTypeName),然后再通过这个变量单独取出这一组中的id、machineTypeName、machineTypeCode三个字段,最后通过if控制器进行判断(如取出的id字段如果为XXXX,那么就需要将这一组中的machineTypeName字段传递给下一个接口使用),以便给下一个接口传递关联的参数,针对这个场景,我们怎么用jmeter来实现呢?正如文章标题所示,Jmeter正则表达提取器可以轻松解决这个问题。
【操作步骤】
1、新增一个线程组,在线程组下面新增一个http请求(根据你的实际情况来配置这个请求)
2、在步骤1中的请求下面新增一个正则表达式提取器,配置如下所示
上图中正则表达式提取器中的参数含义如下:
(1)、引用名称:这个随便取一个名称,主要用于接受正则表达式提取器匹配到的结果
(2)、正则表达式:因为我这个接口返回的每一组参数都包含了id、machineTypeName、machineTypeCode三个字段,所以正则表达式里
面分别写了三个匹配表达式,中间使用英文逗号(",")隔开
(3)、模板:因为我这里要接受三个值,所以用了3个模板,中间同样用英文逗号(",")隔开
3、增加一个"调试取样器",以便运行后查看运行过程中的参数值变化
4、运行脚本,我们看下正则表达式提取的结果值是什么样的
结果很清晰明了,三个值全部存放在了变量machineTypeCode_id_machineTypeName中,其中可以通过machineTypeCode_id_machineTypeName_g1、g2、g3分别获取我们想要的id、machineTypeName、machineTypeCode这三个字段
5、增加一个if逻辑控制器,在逻辑控制器中通过__jexl3函数进行判判断,如果取到的值与我的预期结果值一样,那么就执行其它的HTTP请求
好了,你学会了吗,如果对你有用,请点一个赞,谢谢!!!
这里给大家整理了一份《软件测试工程师进阶的技术栈》,包含了诸多技术栈,希望能帮助在升级打怪中提供中坚力量
给大家推荐下我自己建的软件测试交流学习群: 902061117 ,群里都是搞软件测试的,如果你正在学习测试 ,小编欢迎你加入,大家都是测试党,群内不定期分享干货(都是软件测试相关的),包括我自己整理的一份2021最新的进阶自动化资料。
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你
关注我的微信公众号【伤心的辣条】免费获取~
送上一句话:
世界的模样取决于你凝视它的目光,自己的价值取决于你的追求和心态,一切美好的愿望,不在等待中拥有,而是在奋斗中争取。
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!