- 翻译来自Post Processors
18.8 Post-Processors(后置处理器)
顾名思义,后置处理器是在取样器之后使用的,并且应用于同一范围内的所有采样器,因此如果需要后置处理器仅应用于特定的采样器,需要将其添加为采样器的子元素。
注意,除非另有说明,后置处理器仅应用于父样本,不应用于子样本。对于JSR223和BeanShell处理器,脚本可以使用prev.getSubResults()方法检索子样本,该方法返回一个SampleResults数组。如果没有检索到子样本,则数组将为空。
后置处理器在断言之前运行,因此它们无权访问任何断言结果,样本状态也不会反映任何断言的结果。如果需要访问断言结果,请尝试使用Listener(监听器)。还要注意,在运行所有断言之后,变量JMeterThread.last_sample_ok设置为“true”或“false”。
Regular Expression Extractor(正则表达式提取器)
该提取器允许用户使用正则表达式从服务器响应中提取值,并且在其作用域中的每个sample请求之后执行。总的来说,应用正则表达式,提取请求的值,生成模板字符串,并将结果存储到给定的变量名中。
- Parameters
Attribute | Description | Required |
---|---|---|
Name | 元件名称 | NO |
Apply to: | 见附件1 | YES |
Field to check | 见附件2 | YES |
Name of created variable | 存储提取结果的JMeter变量名。还要注意,每个组都存储为[refname]_g#,其中[refname]表示变量名,#是组号。 | YES |
Regular Expression | The regular expression used to parse the response data. This must contain at least one set of parentheses "()" to capture a portion of the string, unless using the group . Do not enclose the expression in / / - unless of course you want to match these characters as well. | YES |
Template | The template used to create a string from the matches found. This is an arbitrary string with special elements to refer to groups within the regular expression. The syntax to refer to a group is: '' to refer to group 1, '' to refer to group 2, etc. refers to whatever the entire expression matches. | YES |
Match No. (0 for Random) | 匹配项数量。正则表达式可以多次匹配。使用值0表示随机选择匹配项。正数N表示选择第N个匹配项。负数与ForEach Controller一起使用。 | YES |
Default Value | 如果正则表达式没有匹配成功,则变量将设置为默认值。默认值主要是为了防止请求使用错误的变量。 | NO(但推荐使用) |
Use empty default value | 如果在控制面板上选中复选框并且默认值为空,那么JMeter将把变量设置为空字符串,而不是不设置它。 | NO |
如果Match No.设置为非负数,并且匹配到数据,则变量设置如下:
- refName-模板的值
- refName_gn,其中n=0,1,2-匹配的组
-
refName_g-正则表达式中的组数(不包括0)
如果没有匹配发生,并且refName变量存在,则refName将设置为默认值。此外,还将删除以下变量:
refName_g0
refName_g1
refName_g
如果Match No.设置为负数,则处理采样器数据中所有可能的匹配。变量设置如下: - refName_matchNr-找到的匹配数,可以是0
- refName_n,其中n=1、2、3等-模板生成的字符串
- refName_n_gm, where m=0, 1, 2-匹配的n个组
- refName-始终设为默认值
-
refName_gn-不设置
请注意,在这种情况下,refName_gn变量始终设置为默认值,并且未设置关联的组变量。
更多示例参考Response Assertion,information on JMeter regular expressions。
附件1
它用于可以生成子样本的采样器,例如带有嵌入式资源的HTTP采样器、邮件读取器或事务控制器生成的样本。
- Main sample only-仅适用于父样本
- Sub-samples only-仅适用于子样本
- Main sample and sub-samples-父样本和子样本均适用
-
JMeter Variable Name to use-用于接收提取器内容的变量名
匹配将依次应用于所有符合条件的样本。例如,如果有一个主样本和3个子样本,则总共有4个匹配项。对于Match No.=3,Sub-samples only模式,提取器将匹配第三个子样本。对于Match No.=3,Main sample and sub-samples,提取器将依次匹配主样本、第一个子样本、第二个子样本。如果Match No.为0或负值,则将处理所有符合条件的样本。对于Match No.>0,一旦找到足够的匹配项,匹配将停止。
附件2
提取器提取的内容可以来自以下:
- Body-响应的主体。
-
Body(unscaped)-响应的主体,替换了所有Html转义字符。请注意,Html转义是在不考虑上下文的情况下处理的,因此可能会有一些不正确的替换。
请注意,此选项会对性能产生很大影响,因此只有在绝对必要时才使用它。 -
Body as a Document-通过Apache Tika从各种类型的文档中提取文本(参见查看View Results Tree)。
注意,Body作为文档选项可能会影响性能。 - Request Headers-一般只适用于HTTP请求的样本
- Response Headers-一般只适用于HTTP请求的样本
- URL
- Response Code
- Response Message