一、响应断言
可根据要测试的响应字段和模式匹配规则来设置断言,判断接口返回值是否正确。
1.运行一个登录的http请求,查看响应数据:
2.添加响应断言
勾选,输入相关信息 (测试字段与输入的参数要是对应的)
一个断言:
一个断言多个断言,但必须同时满足,才算断言成功:
多个断言,但必须同时满足,才算断言成功勾选"或",多个断言,满足一个即成功:
勾选"或",多个断言,满足一个即成功① 测试字段:
响应文本: 服务器响应文本,一般普通http响应,都勾选这个。
响应代码:http响应代码,如101,200,302,404,501等。但当我们要验证404,501等http响应代码时,需要勾选“ ignore status”。因为当http 响应代码为400,500时,jmeter默认这个请求时失败的。
响应信息:http响应代码对应的响应信息,例如:OK, Found (断言时大小写敏感)
HTTP/1.1 200 OK
HTTP/1.1 302 Found
响应头:例如
Server: Tengine
Date: Thu, 12 Mar 2015 09:43:52 GMT
Content-Type: text/html
Content-Length: 260
Connection: close
Location: http://www.baidu.com/404.html
文档(文本):一般普通http请求,不要选择这个。
url样本:是对sample的url进行断言。如果请求没有重定向(302),那么就是这个就是请求url。 如果有重定向(且跟随重定向),那么url就包含请求url 和 重定向url
② 模式匹配规则:
包括:返回结果包括你指定的内容,支持正则匹配
例如:
测试字段为: 响应文本
模式匹配规则:包括
断言为:1、invalid 2、[a-z]+
当返回值为:{"msg":"channel invalid."} , 这两个断言都是ok的,返回true
备注:[a-z] 表示匹配 26 个小写字母中的任意一个
a+ 表示匹配一个或多个 a 字符
所以[a-z]+表示一个或多个 26 个小写字母中的任意一个 ?
匹配:
(1) 相当于 equals 。当返回值固定时,可以用返回值做断言,效果和equals相同
(2) 正则匹配 。 用正则表达式匹配返回结果,但必须全部匹配。 即正则表达式必须能匹配整个返回值,而不是返回值的一部分。
相等 :返回结果与你指定断言完全一致
SubString:与 “包括”差不多,都是指返回结果包括你指定的内容,但是subString不支持正则字符串
否:就相当于取反。 如果上面断言结果为true,勾选“否”后,最终断言结果为false。如果上面断言结果为false,勾选“否”后,则最终断言结果为 true。
3.添加断言结果
断言结果会记录 执行成功和执行失败的记录
二. BeanShell断言
BeanShell断言可以用于更复杂的个性化需求,使用更灵活,功能更强大
一个简单示例:
例中的代码就是判断响应代码是不是200,是200即断言成功;不是200则断言失败,输出报错信息
不过呢。。这个代码对我来说有一点局限性,有些值还是不会取。。有没有更适合我的方法呢?
有!
根据这个教程Jmeter使用BeanShell 断言进行判断受到了启发
教程内容截图:
看!这个引用!我可以先用提取器提取要验证的内容,然后引用在代码里进行验证
实际应用:
登录成功时,error_code值为0,若登录失败值不为0
用边界提取器提取error_code的值
引用在代码里
一个登录失败的情况:
不过代码还是要学起来呀。。(哭)
响应断言参考教程:
Jmeter笔记:响应断言详解(有测试字段的详细说明)
JMeter 检查点之响应断言(Response Assertion)(也有测试字段的详细说明)
BeanShell断言参考教程:
https://blog.csdn.net/lijing742180/article/details/81157947
https://blog.51cto.com/14010723/2298911(含BeanShell内置变量说明)
网友评论