在使用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请求
好了,你学会了吗,如果对你有用,请点一个赞,谢谢!!!