JMeter-断言
断言
断言是用来检查请求最终结果是不是符合我们的要求的,一般作为请求的子组件存在(最好一个断言只用来验证一个请求),每个请求可以有多个断言
(我觉得,有响应断言和BeanShell断言差不多已经可以达到所有要求了,所以只写这2个)
1. 响应断言
对请求的响应结果进行验证
属性 |
描述 |
备注 |
Apply to |
Sampler可能会产生子Sampler,这里需要选择从哪个Sampler中进行提取 |
|
要测试的响应字段 |
测试请求的哪一部分内容 |
可以参照正则表达式中的要检查的响应字段的说明。 |
模式匹配规则 |
说明要使用哪种方式去验证所测试的文本 |
包括、匹配: 使用Perl5的正则 |
要测试的模式 |
添加要测试的内容,可以添加多个。 |
|
在“察看结果树”或“断言结果”中可以看到断言成功或失败
察看结果树,断言成功,请求显示为绿色
断言失败,请求显示红色,并可以点开查看哪个断言失败(通过的断言不会显示)
断言结果
断言失败会显示失败的断言
2. BeanShell断言
使用BeanShell脚本来验证请求结果
语法使用与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
Failure: boolean; 用于设置断言结果(true表示断言失败,false断言通过,默认为false)
FailureMessage: 用于设置断言信息
SampleResult: 当前Sample的结果方法集,具体查看:
http://jmeter.apache.org/api/org/apache/jmeter/samplers/SampleResult.html
只读
ResponseData: 响应数据(response body,byte数组)
ResponseCode: 响应码
ResponseMessage: 响应信息,比如 OK
ResponseHeaders: 响应头
RequestHeaders: 请求头
SampleLabel: 当前Sampler的名称
SamplerData: 请求中发送的数据(包括: 请求方法,URL, 请求参数,Cookie;不包括请求头)
断言失败的时候: