jmeter中重定向多个正则表达式_Jmeter_Json表达式关联(二)

43416f1152c48a9d4b3ce02806a21d4f.png

在Jmeter中,除了正则表达式和xpath表达式,还有一种方式也可以做关联,那就是 Json Extractor。它是利用json表达式提取出关键信息,传递变量。

78d3da8f34598d09ae9267a478bcb01f.png

e4bd5de97a1b99a7a10617d2b7a2eca6.png

Variable names : 名称

JSONPath Expression:JSON表达式

Match Numbers:0代表随机,1代表第1个,-1代表全部

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

我们在用jmeter做接口测试的时候,有的时候会遇到一些复杂的json响应。比如多层list嵌套时的取值

下面举例来讲解jsonpath的写法

544872e737b632cb6d163bed84db1564.png

$..Name:列出所有省份

dda002efac9974f08b9367553af817ef.png

$..Province[0].Name 提取Province中第一个list中的Name

46f29375c5a6ec75d2fe04ccdd0f4162.png

$..[?(@.Name=='Beijing')] 筛选出省份名为Beijing的所有list数据

ace5c92c0604132a4e7b475ac5d8c3e0.png

 $.Province[:2].population 筛选前两条数据

1fa219e3b8619acc303f952a8e153cf0.png

注意:

$.Province[:2].population 是筛选出前两条数据 ;

$.Province[2].population 是排除前两条数据;

$.Province[-2].population是排除后两条数据,千万别弄混了哦~

这里做一下总结:

1: 冒号在前

:index 正序取值,取数为index

例:1 表示正序取1条数据(正数第一条)

:-index 倒序过滤,取数为index

例:-1 表示倒序过滤一条数据(倒数第一条)

2:没有冒号

index 表示顺序取index+1的值

例: 1 取第二条数据

3:冒号在后

index: 顺序过滤,取数为index

例: 1: 表示正序过滤第一条数据

-index:倒序取值,取数为index

例:-1: 表示倒序取一条数据

  下面列举一个复杂的例子:

1eed51b9100aa0efb608e78909a1bd65.png

 这是一个多层嵌套的jsonlist,需要提取所有cabinInfos列表下,patFlag=Y时的cabin,standardPrice和finallyPrice。

是不是听起来就很复杂?如果按照传统的正则表达式提取,那么 很难满足这里的需求了。因此就需要用到jsonpath表达式。

$..[?(@.patFlag=="Y")].["cabin","standardPrice","finallyPrice"]

03157bd32b991958ff2feaaba3910a5f.png

注:JSON Extractor使用json path表达式匹配,可以一次取多个变量值。$表示响应的根对象。取子对象或对象的属性用. 取数组里的对象用[],数组索引从0开始

示例:

下面这个响应是一个list组,可以提取前两个list里面的Name

403034720351e45fa90fc845dffe93bd.png

1:添加一个JSON Extractor表达式,分号分隔多个参数名;分号分隔多个json表达式;分号分隔多个匹配数字;分号分隔多个默认值(必填

2:所有的个数一定要匹配,任一个不匹配该请求都不会在提取成功

f39b76655516f491188c2b746f90c1a0.png

ece6399bdb074b8698ba61f245faa15e.png

也可以用表达式匹配所有值,然后用match no获取想要的值

5fe86688bb004cb482795135c9366416.png

5dc9b222909745e5c149c3e1fa993f3f.png

提供一个mock接口的地址,直接访问即可

https://easy-mock.com/mock/5b88b27476b79510db917603/example/query1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值