后置处理器是在发出“取样器请求”之后执行一些操作。取样器用来模拟用户请求,有时候服务器的响应数据在后续请求中需要用到,我们的势必要对这些响应数据进行处理,后置处理器就是来完成这项工作的。
常用后置处理器:json提取器、正则提取器、边界提取器
一、json提取器
响应体为json格式时,想要从响应结果中提取数据,优先使用json提取器。
绝对路径:用$.开头,再跟上点号和节点名称。
相对路径$..跟上末梢节点名称,一般用相对路径获取。---用的比较多
1、参数
Name:名称,可以随意设置,甚至为空;
Comments:注释,可随意设置,可以为空;
Update Once Per Iteration:标识是否每轮迭代更新一次元素;
Apply to(应用范围):
Main sample and sub-samples:应用于主sample及子sample
Main sample only:默认的是这个,应用于主sample
Sub-samples only:应用于子sample
JMeter Variable Name to use:应用于变量命名的内容
Name of created Variable:保存的变量名,后面使用${Variable names}引用
JSON Path Expression:json表达式
Match No.(0 or Random):匹配的值是哪一个,默认不填写是获取符合条件的第一个,这个与正则表达式的类似(0为随机、N为获取第N个、-1获取所有)
Compute comcatemation var(suffix_ALL):如果发现许多结果,插件将使用“,”分隔符将它们连接起来,并将其存储在名为<variable name>_ALL的var中
Default Values:当没有获取到参数值时的默认值
2、match no
- 在范围外的,无法获取到数据
- 在范围内的,取到对应的值
- 0,随机取一个
- 值-1,是取所有的,但是不能用${id}变量,变量不存在。会自动在变量名后面加上数值
如果想用就要用v函数。
3、在一个json提取器中提取多个值
- 多个提取式直接用分号分隔
- 变量名称、匹配数值、数量都要一致
- 请求默认值,必须填写,否则就无法匹配到
4、二次提取
json返回如下
1、先提取到items
2、从json中二次提取。添加json提取器
5、如图,
提取到了所有的值,如果只是要用获取其中的几个,怎么获取
我只想要其中某几个,怎么搞?
或者,我只想要最后一个
或者,还有同学,想刁钻一下,说我只想要满足某个条件的值。如:我只想要id>200的手机号码
哇, 看到没有,原来json可以切片,还可以条件取值。
其实,我告诉大家,它还有一个
二、正则表达式提取器
1、详解
匹配数字:0随机,-1所有
2、获取多个数据
模板$1$是取第一组,模板$2$是取第2组,以空格分隔
调试取样器查看,正则表达式提取器成功
三、边界提取器
边界提取器:与正则用法相同,就是不用写正则表达式
1、详解
Name:名称,可以随意设置,甚至为空;
Comments:注释,可随意设置,可以为空;
Update Once Per Iteration:标识是否每轮迭代更新一次元素;
Apply to(应用范围):
Main sample and sub-samples:应用于主sample及子sample
Main sample only:默认的是这个,应用于主sample
Sub-samples only:应用于子sample
JMeter Variable Name to use:应用于变量命名的内容
Name of created Variable:保存的变量名,后面使用${Variable names}引用
JSON Path Expression:json表达式
Match No.(0 or Random):匹配的值是哪一个,默认不填写是获取符合条件的第一个,这个与正则表达式的类似(0为随机、N为获取第N个、-1获取所有)
Compute comcatemation var(suffix_ALL):如果发现许多结果,插件将使用“,”分隔符将它们连接起来,并将其存储在名为<variable name>_ALL的var中
Default Values:当没有获取到参数值时的默认值