JMeter-后置处理器
后置处理器
在Sampler运行后执行。
建议都添加后置处理器作为一个sampler的子组件(确保是作用于你需要的那个sampler,不然,他会作用与他同级的所有sampler),比如.
1. BeanShell PostProcessor
语法与BeanShell Sampler一样,但注意可用的变量有不同的
结果:
- vars:操作Jmeter变量
a) vars.get(“name”):从jmeter中获得变量值
b) vars.put(“key”,”value”):保存数据到jmeter变量中,如果变量不存在会自动创建 - props: 操作Jmeter属性
a) props.get(“START.HMS”); 注:START.HMS为属性名
b) props.put(“PROP1”,”1234”); 保存数据到Jmeter属性中,如果属性不存在会自动创建 - log: 记录日志
比如log.info(“日志信息”); 具体查看: https://www.slf4j.org/api/org/slf4j/Logger.html - ctx: 操作上下文,具体查看:
http://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterContext.html - prev: 操作前一个请求。具体查看:
http://jmeter.apache.org/api/org/apache/jmeter/samplers/SampleResult.html - data: (byte [])- 用户访问当前请求的数据 (byte数组,不知道什么场景下有用呢。。)
2. JDBC PostProcessor
在请求运行之后进行数据库操作。
使用方法与JDBC Request 是一样的。
应用场景,比如在创建用户,需要知道保存在数据库中的用户信息,可以使用JDBC PreProcessor进行查询
3. JSON Extractor
json 提取器,使用JSON-PATH语法,具体察看:
http://goessner.net/articles/JsonPath/
注意只有响应数据为json时适用
属性 | 描述 | 备注 |
---|---|---|
Variable Names | 变量名 | |
JSON Path Expressions | Json提取表达式 | |
Match No. (0 for Random) | 当提取有多个结果值时,选择需要的值保存到变量中,默认值为0 0:随机一个 -1:全部值,使用_N 方式保存(N从1开始),比如status_1,status_2… X: 自然数,比如1,返回第X个值(如果X大于返回值的数量,结果会不能获取,最终返回设置的默认值) |
|
Compute concatenation var | 如果有匹配到多个值,选择此项,会将全部值保存到_ALL,并使用逗号分割每个值 | 注意Match No. (0 for Random)需要为-1才有效,不然只能匹配到一个值了 |
比如一个获取用户信息请求,请求失败返回为json,需要提取status值
JSON Extractor:
结果:
4. 正则表达式提取器
使用正则表达式提取请求中的内容。
属性 | 描述 | 备注 |
---|---|---|
Apply to | Sampler可能会产生子Sampler,这里需要选择从哪个Sampler中进行提取 | |
要检查的响应字段 | 指要从请求的哪部分内容中进行提取 主体:请求的响应数据 Body (unescaped):请求的响应数据,html代码不会被转义 Body as a Document: 信息头:指响应头 Request Headers:请求头 URL: 请求地址 响应代码:e.g 200 |
响应信息:e.g OK 感觉这些中文翻译有点绕。。可以从下面的注解截图中了解下 |
引用名称 | 用来保存提取结果的。同时还会生成一组变量,[引用名称]_g#: [引用名称]_g:表达式提取的次数(指表达式中”()”的数量) [引用名称]_g0:表达式匹配到的完整字符串 [引用名称]_g1:表达式中第1个“()”提取到的值 [引用名称]_g2:表达式中第2个“()”提取到的值 。。。 |
如果表达式匹配到多个字符串,最终引用名称生成的变量会变成 [引用名称]_N_g#, N表示匹配的字符串顺序 |
正则表达式 | 正则表达式,最少要包括一个“()”, 括号里面的表示要提取的内容 | 比如:aaa(.+?)ccc, 可以提取到aaabbbcc中的 “bbb”. (.+?)是一个很常用的表达式, .表示任意一个字符 +表示重复一次或多次 ?表示匹配0次或一次 更多的的介绍可以看下:正则表达式 |
模板 | 说明要获取哪个提取式的内容,比如 ’$1$’: 获取第1组的内容(指第一个“()”中提取到的值) ’$2$’: 获取第2组的内容 。。。 $0$ :表示获取整个表达式匹配的内容(就是[引用名称]_g0 的值) |
|
匹数数字 | 表达式可能会匹配多个字符串,匹数数字说明要获取第几个匹配值 0:表示随机一个 N:表示第N个 -1:表示全部(负数都是一样的) |
如果填写了负数,最终引用名称必然会加上序号,比如[引用名称]_1, 使用的时候要注意 |
缺省值 | 表达式匹配不到字符串时,保存到引用名称中的值 | 默认值,可以为空的 |
注:
要检查的响应字段:
最终提取结果:
使用HTTP请求访问百度,正则表达式提取器 如本节开头截图