本次分享大纲
JSON提取器使用场景
JSON提取器使用说明
JSON提取器语法详解
实例分享
JSON提取器总结
思考
使用场景
上一个接口的返回值作为下一个接口的传参?怎么实现:
-
JMETER之正则表达式
-
JMETER之JSON提取器
使用说明
在某个HTTP请求右键添加后置处理器,选择JSON提取器,如下图所示:
Applyto(应用范围):
Main sampleand sub-samples:应用于主sample及子sample
Main sample only:默认的是这个,应用于主sample
Sub-samples only:应用于子sample
JMeterVariableName to use:应用于变量命名的内容
Names of created variables:你后续要引用的参数名称
JSONPathExpression:json表达式
MatchNo.(0or Random):
匹配的值是哪一个,默认不填写是获取符合条件的第一个,这个与正则表达式的类似(0为随机、N为获取第N个、-1获取所有)
Computecomcatemationvar(suffix_ALL):
如果发现许多结果,插件将使用“,”分隔符将它们连接起来,
并将其存储在名为<variable name>_ALL的var中。
DefaultValues:当没有获取到参数值时的默认值
提取返回值中的username参数值示例:
语法
$.你要提取的参数
实例分享
{
"code":200,
"totals": 1,
"list": [
{
"insertTime":"2019-01-14 23:34:28.0",
"password":null,
"insertUid":null,
"mobile":"16868899222",
"updateTime":null,
"del":false,
"id":1558,
"job":"false",
"roleNames":"超级管理员",
"email":"nishuangyi@sina.com",
"username":"14502039931"
}
]
}
1.我想提取code参数值:
JSON Path Extractor:$.code
2.提取username参数值:
JSON Path Extractor:$.list[0].username
语法总结
1、如果提取的参数不存在父级?
$.你要提取的参数名
2、提取的参数存在父级
$.你要提取的参数名的父亲.你要提取的参数名
3、如果提取参数的父级存在父级
$.你要提取的参数名的父亲的父亲(爷爷).你要提取的参数名的父亲.你要提取的参数名
4、参数如果是数组?
$.你要提取的参数参数[N]
以下标的形式取值,0代表取的数组中第一个值,1代表取的是数组中第二个值,N代表取的数组中第N+1个值
5、如何判断父子关系?
{
"code":200,
"totals": 1,
"list": [
{
"insertTime":"2019-01-14 23:34:28.0",
"password":null,
"insertUid":null,
"mobile":"16868899222",
"updateTime":null,
"del":false,
"id":1558,
"job":"false",
"roleNames":"超级管理员",
"email":"nishuangyi@sina.com",
"username":"14502039931"
}
]
}
注:
1.缩进既是儿子
例如list是username的父级
username与email是同辈关系
2.父级永远在子级前面
先有爸爸,才有儿子
3.对于初学者而言,JSON提取器比正则表达式更容易理解。
验证
通过Debug Sampler打印出json提取器所提取的参数值
思考
留个作业题:如何提取多个返回值的参数
如果有不懂的,欢迎在知识星球提问,或者加入我们的Jmeter学习群
本文分享自微信公众号 - FelixNi测试总结分享(ShareTest2018)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/4624697/blog/4538633