后置处理器用来获取响应信息中的某些数据供后面的请求使用。一般常用的就是JSON提取器和正则表达式提取器。一般置于相应的HTTP请求下。
JSON提取器
如果响应信息为JSON格式那么我们一般使用JSON提取器。JSON提取器结构如下:
Apply to:作用范围(返回内容的取值范围)
Main sample and sub-samples:作用于父节点的取样器及对应子节点的取样器
Main sample only:仅作用于父节点的取样器(选默认的 main sample only 就行了)
Sub-samples only:仅作用于子节点的取样器
JMeter Variable Name to use:作用于JMeter变量(输入框内可输入JMeter的变量名称),从指定变量中提取需要的值
Variable names:保存的变量名,后面使用**${Variable names}**引用
JSON Path expressions:上一步中调试通过的json path表达式
Match Numbers:匹配数字(0代表随机,1代表第一个,-1代表所有)
Default Values:找不到时默认值,一般设置为NOT FOUND
Compute concatenation var(suffix_ALL):是否统计所有,即将匹配到的所有值保存,名为“变量名_ALL”,使用场景需要获取的值有多个,后面需要对这一组数据进行操作
如何进行调试看自己的表达式写的对不对呢?我们可以添加一个Debug Sampler,通过查看结果数来看自己取数对不对。
分享两个很实用的网站:
JSON表达式可视化生成(可以快速生成自己需要的Json表达式):https://www.qianbo.com.cn/Tool/Json
JSON在线视图查看(可以帮助你理解Json表达式为什么这么写):https://www.bejson.com/jsonviewernew
正则表达式提取器
如果响应信息为HTML格式那么我们一般使用正则表达式提取器。正则表达式提取器结构如下:
Apply to:作用范围(返回内容的取值范围)
Main sample and sub-samples:作用于父节点的取样器及对应子节点的取样器
Main sample only:仅作用于父节点的取样器(选默认的 main sample only 就行了)
Sub-samples only:仅作用于子节点的取样器
JMeter Variable Name to use:作用于JMeter变量(输入框内可输入JMeter的变量名称),从指定变量中提取需要的值
要检查的响应字段:从响应信息哪部分取值
引用名称:保存的变量名,后面使用**${引用名称}**引用
正则表达式:上一步中调试通过的正则表达式
模版:
匹配数字:匹配数字(0代表随机,1代表第一个,-1代表所有)
缺省值:找不到时默认值,勾选使用空默认值则不能编辑缺省值
如何进行调试看自己的表达式写的对不对呢?我们可以添加一个Debug Sampler,通过查看结果数来看自己取数对不对。
一般来说正则表达式我们可以用xxx(.*?)xxx,括号内为所要提取的信息,括号前后是所提取信息的前后内容。具体的正则表达式使用我们可以看菜鸟教程中https://www.runoob.com/regexp/regexp-syntax.html进行学习。
后置处理器在实际应用中非常有用,尤其是一些参数化,比如获取登录后返回的token,又或者或者返回的pageid。通过后置处理器获取到这些参数来供后面请求使用。