Jmeter模块详解(5)后置处理器

目录

JSON提取器(JSON Extractor)

边界提取器(Boundary Extractor)

正则表达式提取器(Regular Expression Extractor)


 

*本文部分图片来自网络

 

后置处理器在取样器之后执行,后续操作的子件集合,对请求响应做一些处理,或者抓取响应数据,提取变量方便后续调用或断言等

 

JSON提取器(JSON Extractor)

Jmeter模块详解(5)后置处理器

 

如图要抓取接口的两个返回json值:

Jmeter模块详解(5)后置处理器

 

配置如下:

Jmeter模块详解(5)后置处理器

 

·  variable names:变量名称,提取到的值存放在该变量中,后续通过该变量即可引用提取到的数据,多个变量名通过分号(;)隔开

·  json path expressions:格式为 $.XX.XX.XX$.必须要的,若有很多层级,用英文句号.隔开,多个路径通过分号(;)隔开,若为空即默认取第一个数据

·  Match No.:取第几个值,0为随机,-1为全部即取数组

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

·  Compute concatenation var(suffix_ALL):是否统计所有,即将匹配到的所有值保存,名为“变量名_ALL”,使用场景需要获取的值有多个,后面需要对这一组数据进行操作


引用变量:

Jmeter模块详解(5)后置处理器
引用格式为:${变量名},加入下标可取指定行数的值,比如取第一行的值${变量名_1}

提取复杂结构的json数据:

Jmeter模块详解(5)后置处理器

分析这段json:

如果我要获取data{}里的orderNo怎么写呢:首先分析json提取格式是【$.】后面跟参数,OrderNo 是包在data里,data 被包在result里,所以我们一层一层的定位:$.result.data[0].orderNo

->为什么要加[0]?

首先data 下面不止一段json,可能有很多,我们现在定位的是第一段,它是数组,所以取第一个下标就是[0],如果取第二个下标就是[1]以此类推。

场景2:

Jmeter模块详解(5)后置处理器

 

# 提取所有,使用 * , -1 代表全部

Jmeter模块详解(5)后置处理器

Jmeter模块详解(5)后置处理器

引用时,使用 ${hello_1}即可

 

边界提取器(Boundary Extractor)

 

Jmeter模块详解(5)后置处理器

 

如图要抓取接口的返回值:

Jmeter模块详解(5)后置处理器

 

配置如下:

Jmeter模块详解(5)后置处理器

 

·  引用名称:变量名称,提取到的值存放在该变量中,后续通过该变量即可引用提取到的数据

·  左边界:严格填写所取值的左边界字符

·  右边界:严格填写所取值的右边界字符

·  Match No.:取第几个值,0为随机,-1为全部即取数组

 

引用变量:

Jmeter模块详解(5)后置处理器

 

引用格式为:${变量名},加入下标可取指定行数的值,比如取第一行的值${变量名_1}

 

正则表达式提取器(Regular Expression Extractor)

Jmeter模块详解(5)后置处理器

如下需要获取登录返回头部的token:

Jmeter模块详解(5)后置处理器

提取器如下配置:

Jmeter模块详解(5)后置处理器

Match No.:取第几个值,0为随机,-1为全部即取数组

表达式中,(.*?)为锁定要提取的值的位置,cookie_token=相当于左边界,;相当于右边界。

如下获取到token值并赋给gettoken参数:

Jmeter模块详解(5)后置处理器

 

引用格式为${参数名},加入下标可取指定行数的值,比如取第一行的值${变量名_1},参考跨线程全局变量__setProperty()目录