Jmeter之Json表达式关联
Jmeter使用中,通常用的最多的是正则表达式和Xpath表达式,但是现在大多数网站都用的Json返回数据,而且数据还特长的那种,作为合格的测试人员也要适应技术潮流发展,下面介绍利用Json Extractor进行Json表达式关键字信息提取并传递变量。
Variable names : 名称
JSONPath Expression :JSON表达式
Match Numbers :0代表随机,1代表第1个,-1代表全部
Default Value :未取到值的时候默认值
Jsonpath写法:
{ "reason":"查询成功", "result":[ { "id":"1", "province":"安徽" }, { "id":"2", "province":"澳门" }, { "id":"3", "province":"北京" }, { "id":"4", "province":"福建" }, { "id":"34", "province":"重庆" } ], "error_code":0 }
$..id:列出所有省份
$..result[0].province:提取result中第一个list里面的province
$..[?(@.province=='北京')]:筛选出province为北京的所有list数据
$.result[:2].province:筛选前两条数据
PS:注意观察中括号里的符号
$.result[:2].province 是筛选前两条数据
$.result[2].province 是排除前两条数据
$.result[-2].province 是排除后两条数据
总结:
1、冒号在前
:index 正序取值,取数为index(正数第一条)
:-index 倒序过滤,取数为index(倒数第一条)
2、没有冒号
index 表示顺序取index+1的值(取第二条数据)
3、冒号在后
index: 顺序过滤,取数为index(正序过滤第一条数据)
-index:倒序取值,取数为index(倒序取一条数据)
$..[?(@.id=="63")].["title","tags","imtro"]:匹配id=63下title、tags、imtro的数据
注:JSON Extractor使用json path表达式匹配,可以一次取多个变量值。$表示响应的根对象。取子对象或对象的属性用. 取数组里的对象用[],数组索引从0开始
1:添加一个JSON Extractor表达式,分号分隔多个参数名;分号分隔多个json表达式;分号分隔多个匹配数字;分号分隔多个默认值(必填)
2:所有的个数一定要匹配,任一个不匹配该请求都不会在提取成功