Jmeter常用后置处理器之正则表达式提取器、JSON提取器、JSON JMESPath Extractor-27

后置处理器在取样器执行之后执行,通常用于提取处理样本返回数据,应用于同一范围内的所有取样器,如果要将后置处理器应用于指定的取样器,需要将其添加为取样器的子代。

后置处理器在断言之前运行,所以无权访问任何断言结果。

正则表达式提取器

允许用户使用正则表达式从服务器响应中提取值。作为后处理器,此元素将在其范围内的每个Sample请求之后执行,应用正则表达式,提取请求的值,生成模板字符串,并将结果存储到给定的变量名称中。

在这里插入图片描述

属性描述

名称:显示的此取样器的描述性名称,可自定义

Apply to: 仅主样本 :仅适用于主样本
仅子样本 :仅适用于子样本
主样本和子样本 :均适用。
使用的JMeter变量名称 -提取将应用于命名变量的内容
要检查的响应字段 正则表达式提取的目标,即设定从哪里提取

引用名称 :可引用的变量名称
正则表达式: 用于解析响应数据的正则表达式

模板 :模板的语法是:’ $ 1 $ ‘引用组1,’ $ 2 $ '引用组2。$ 0 $引用整个表达式匹配的内容。
匹配数字: 指示要使用的匹配项。

缺省值: 如果表达式不匹配,则将变量设置为缺省值

JSON提取器

JSON 提取器可以使用JSON-PATH语法从JSON格式的响应中提取数据。

该后处理器与正则表达式提取器非常相似。必须将其放置为HTTP Sampler或具有JSON响应的任何其他取样器的子级,可以以非常简单的方式提取JSON文本内容。

在这里插入图片描述

属性描述
名称 显示的此取样器的描述性名称,可自定义

Apply to 仅主样本 :仅适用于主样本
仅子样本 :仅适用于子样本
主样本和子样本 :均适用。
使用的JMeter变量名称 -提取将应用于命名变量的内容

Names of created variables 以 ; 分隔的变量名称(需要匹配JSON Path的数量)
JSON Path Expressions 以 ; 分隔的JSON Path表达式(必须匹配变量数量)

Default Values 以 ; 分隔的默认值,若表达式没有匹配结果,则使用默认值
Match No. (0 for Random) 如果JSON Path提取到多个结果,则可以设置选择提取哪个结果作为变量

Compute concatenation var 如果找到许多结果,将使用’ , '分隔符将它们连接起来,并将其存储在名为 _ALL的var中

Match No. (0 for Random)中设置:
0:表示随机(默认值)
-1:表示提取所有结果,它们将被命名为<变量名> _N(其中N从1到结果数)
X:表示提取第X 个结果。如果此X大于匹配数量,则不返回任何内容。将使用默认值

关于JsonPath的详细使用介绍
JSON示例:
{
“store”: {
“book”: [
{
“category”: “reference”,
“author”: “Nigel Rees”,
“title”: “Sayings of the Century”,
“price”: 8.95
},
{
“category”: “fiction”,
“author”: “Evelyn Waugh”,
“title”: “Sword of Honour”,
“price”: 12.99
},
{
“category”: “fiction”,
“author”: “Herman Melville”,
“title”: “Moby Dick”,
“isbn”: “0-553-21311-3”,
“price”: 8.99
},
{
“category”: “fiction”,
“author”: “J. R. R. Tolkien”,
“title”: “The Lord of the Rings”,
“isbn”: “0-395-19395-8”,
“price”: 22.99
}
],
“bicycle”: {
“color”: “red”,
“price”: 19.95
}
},
“expensive”: 10
}

提取所有书的作者 :$.store.book[*].author
提取所有的作者 :$..author

提取store包含的所有数据 :$.store.*
提取所有物品的价格 :$.store..price

提取第三本书的数据 :$..book[2]
提取倒数第二本书的数据 :$..book[-2]

提取前两本书的数据 :$..book[1,2]
提取索引1(包括)到索引2(不包括)的书的数据 :$..book[1:2]

提取最后两本书 :$..book[-2:]
所有带有isbn属性的书 : $..book[?(@.isbn)]

所有价格小于10的书 :$..book[?(@.price < 10)]
所有价格小于属性“expensive”的书 :$..book[?(@.price<=$[‘expensive’])]

需要注意的是, Json提取器中不允许在JsonPath末尾调用函数(min()、max()、avg()、stddev()、length()、sum()),如果使用这些函数,将无法获取预期的结果。
通常的,编写JsonPath时,可以通过察看结果树中的Json Path Tester测试提取的结果是否符合预期。

JSON JMESPath Extractor

JSON JMESPath Extractor作为5.2版本之后加入的后置处理器,其功能与JSON提取器类似,都是对JSON格式的返回数据进行提取,但使用的语法不同。JSON JMESPath Extractor使用JMESPath查询语言从Json结果中提取值。
在这里插入图片描述
属性描述

名称 :显示的此取样器的描述性名称,可自定义
Apply to
仅主样本 :仅适用于主样本
仅子样本 :仅适用于子样本
主样本和子样本 :均适用。
使用的JMeter变量名称 :提取将应用于命名变量的内容

Names of created variables :变量名称
JMESPath Expressions :JMESPath表达式

Default Values :若表达式没有匹配结果,则使用默认值
Match No. (0 for Random) :如果JMESPath提取到多个结果,则可以设置选择提取哪个结果作为变量

Match No. (0 for Random)中设置:
0:表示随机(默认值)
-1:表示提取所有结果,它们将被命名为<变量名> _N(其中N从1到结果数)
X:表示提取第X 个结果。如果此X大于匹配数量,则不返回任何内容。将使用默认值
关于JMESPath的详细使用介绍

Json JMESPath示例:
{
“store”: {
“book”: [
{
“category”: “reference”,
“author”: “Nigel Rees”,
“title”: “Sayings of the Century”,
“price”: 8.95
},
{
“category”: “fiction”,
“author”: “Evelyn Waugh”,
“title”: “Sword of Honour”,
“price”: 12.99
},
{
“category”: “fiction”,
“author”: “Herman Melville”,
“title”: “Moby Dick”,
“isbn”: “0-553-21311-3”,
“price”: 8.99
},
{
“category”: “fiction”,
“author”: “J. R. R. Tolkien”,
“title”: “The Lord of the Rings”,
“isbn”: “0-395-19395-8”,
“price”: 22.99
}
],
“bicycle”: {
“color”: “red”,
“price”: 19.95
}
},
“expensive”: 10
}

提取所有书的作者 :store.book[*].author
提取store包含的所有分类数据 :store.*

提取所有物品的价格 :store.[bicycle.price,book[*].price]
提取第三本书的数据 :store.book[2]

提取倒数第二本书的数据 :store.book[-2]
提取前两本书的数据 :store.book[:2]

提取索引1(包括)到索引2(不包括)的书的数据 :store.book[1:2]
提取最后两本书 :store.book[-2:]

所有带有isbn属性的书 :store.book[?(@.isbn)]
所有书种类的数量 :length(store.book[*])

价格最高的书名 :max_by(store.book, &price).title
价格最低的书信息 :min_by(store.book, &price)

JSON JMESPath Extractor与JsonPath提取器对比

一个JsonPath提取器可以通过 ; 分离的方式,提取多个变量表达式

JSON JMESPath Extractor只支持提取一个变量,如果要提取多个变量,则需要添加多个JSON JMESPath Extractor

JsonPath提取器不支持函数,JSON JMESPath Extractor支持使用函数length()、max_by()、min_by(),可应用于部分特殊场景,所以可以根据场景实际需要,选择要用的提取器类型

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值