用jmeter做接口测试常遇到一种情况,上个请求的响应信息会作为下个请求的请求参数,这时我们会把上个响应信息提取出来,给下个请求入参,就会经常使用到正则提取和json提取,接下来我们分别看看两种后者处理器的用法。

一、正则提取器

在HTTP请求下添加后置提取器,如下图

java 正则匹配取出json串 正则提取json字段_正则


先看一下,我们需要提取的响应信息,在察看结果树里面

java 正则匹配取出json串 正则提取json字段_java 正则匹配取出json串_02


我们需要这个token值作为下个请求的参数

java 正则匹配取出json串 正则提取json字段_正则_03


引用名称:下一个请求要引用的参数名称,如填写token,则可用java 正则匹配取出json串 正则提取json字段_json_04$引用起来,如果在正则表达式中有多个正则表达式,则可以是java 正则匹配取出json串 正则提取json字段_正则_05java 正则匹配取出json串 正则提取json字段_java 正则匹配取出json串_06等等,表示解析到的第几个值给title。如:java 正则匹配取出json串 正则提取json字段_json_07表示解析到的第1个值

匹配数字:0代表随机取值,1代表全部取值

缺省值:如果参数没有取得到值,那默认给一个值让它取,我填的aaa。

通过F12或者fiddler抓包知道,下个请求是在请求头使用这个参数,所以在请求下加个HTTP信息头管理器,如图

java 正则匹配取出json串 正则提取json字段_正则_08


值看请求的格式,通过抓包我们了解到,对应的填入就ok啦

java 正则匹配取出json串 正则提取json字段_java 正则匹配取出json串_09


最后看看下个请求是不是使用的这个参数呢,传参成功了!!!

java 正则匹配取出json串 正则提取json字段_正则_10


二、json 提取器

json提取器的原理和正则是一样的,都是为了获取上个请求的响应信息,给下个请求提供参数。在http请求里添加后置处理器json extractor

java 正则匹配取出json串 正则提取json字段_正则表达式_11


java 正则匹配取出json串 正则提取json字段_正则_12


Variable names : 变量名称

JSONPath Expression:JSON表达式 格式:$.data.token。如果响应data为数组,故应为 $.data[0].token 提取第1个值,data[*]表示取全部值

Match Numbers:可为空即默认第一个 ,-1即所有值

Default Value:未取到值的时候默认值

然后把参数加入到下个请求参数里

总结

java 正则匹配取出json串 正则提取json字段_正则_13


同时用正则提取器和json 提取器,提取token值,发现json更加准确,只返回了一条数据。当然小伙伴们可以根据自身的项目来判断使用哪一种方面。