ApiPost的断言功能
文章目录
- 一、如何使用断言
- 二、响应参数变量
- response.raw:原始响应数据
- response.json:json 格式的响应数据
- response.headers:响应头
- response.cookies :响应 cookie
- 三、常用断言表达式
- 1、检查 response body 中是否包含某个 string
- 2、检测返回 JSON 中是否包含某个字段
- 3、检测返回 JSON 中的某个值是否`包含`、`等于`、`不等于`或`大于等于` 预期的值
- 4、检测返回 JSON 中的某个值是否为空
- 5、测试 response Headers 中的某个元素是否存在(如:Content-Type)
- 6、验证 Status code(响应码)的值是不是等于 200
- 7、验证 Response time(请求耗时)是否大于某个值
- 8、验证返回类型是不是 json
- 四、测试脚本断言
- 1、验证响应码是否是200
- 2、使用多个断言
- 3、解析响应体数据
- 4、处理不解析的响应
- 五、对 HTTP 响应进行断言
- 1、测试响应体
- 2、测试状态码status
- 3、测试响应头header
- 4、测试 cookie
- 5、测试响应时间是否在指定范围内
- 六、测试响应码
- 1、检查状态码是否为1XX
- 2、检查状态码是否为2XX
- 3、检查状态码是否为3XX
- 4、检查状态码是否为4XX
- 5、检查状态码是否为5XX
- 6、检查状态码是否为4XX或5XX
- 7、检查状态码是否为200
- 8、检查状态码是否为202
- 9、检查状态码是否为400
- 10、检查状态码是否为401
- 11、检查状态码是否为403
- 12、检查状态码是否为404
- 13、检查状态码是否为429
一、如何使用断言
在协作开发、版本升级、服务器升级、接口返回的过程中,有可能因为一些 bug,和预期的结果不一致。为了便于开发&测试人员能够更快的发现 bug,保证整个产品的质量以及进度,于是推出了断言功能。
- 定义测试用例(即:后执行脚本)
- 验证测试用例(查看断言与校验结果,红色代表未通过,绿色代表通过)
二、响应参数变量
response.raw:原始响应数据
response.raw.status //响应状态码(200、301、404 等)
response.raw.responseTime //响应时间(毫秒)
response.raw.type //响应类型(json 等)
response.raw.responseText //响应文本
response.json:json 格式的响应数据
response.json.data.token //也可以 response.json.data["token"]
response.headers:响应头
response.headers.server //也可以 response.headers["server"]
response.cookies :响应 cookie
response.cookies.PHPSESSION //也可以 response.cookies["PHPSESSION"]
三、常用断言表达式
1、检查 response body 中是否包含某个 string
apt.assert('response.raw.responseText=="test"'); // 检查响应文本是否
等于 test 字符串
apt.assert('response.raw.responseText.indexOf("test") > -1'); // 检
查响应文本是否含有 test 字符串
2、检测返回 JSON 中是否包含某个字段
apt.assert('response.json.hasOwnProperty("errcode")'); // 检测返回
json 对象的是否含有 errcode 字段
3、检测返回 JSON 中的某个值是否包含
、等于
、不等于
或大于等于
预期的值
apt.assert('response.json.errcode.indexOf("success") > -1'); // 检
测返回 json 对象的 errcode 字段是否含有 success 字符串apt.assert('response.json.errcode=="success"'); // 检测返回 json 对象
的 errcode 字段是否等于 success 字符串apt.assert('response.json.errcode!="success"'); // 检测返回 json 对象
的 errcode 字段是否不等于 success 字符串apt.assert('response.json.errcode>=1'); // 检测返回 json 对象的
errcode 字段是否大于等于 1
4、检测返回 JSON 中的某个值是否为空
apt.assert('response.json.errcode==null'); // 检测返回 json 对象的
errcode 字段是否是 null
5、测试 response Headers 中的某个元素是否存在(如:Content-Type)
apt.assert('response.headers.hasOwnProperty("content-type")');
6、验证 Status code(响应码)的值是不是等于 200
apt.assert('response.raw.status==200');
7、验证 Response time(请求耗时)是否大于某个值
apt.assert('response.raw.responseTime>=100');
8、验证返回类型是不是 json
apt.assert('response.raw.type=="json"');
四、测试脚本断言
1、验证响应码是否是200
apt.test("响应码为 200", function () {apt.response.to.have.status(200);
});
apt.test("Status code is 200", () => {apt.expect(apt.response.code).to.eql(200);
});
2、使用多个断言
如果包含的任何断言失败,则整个测试将失败。所有断言都必须成功才能使测试通过。
apt.test("The response has all properties", () => {const responseJson = apt.response.json;apt.expect(responseJson.type).to.eql('vip');apt.expect(responseJson.name).to.be.a('string');apt.expect(responseJson.id).to.have.lengthOf(1);
});
3、解析响应体数据
要对响应执行断言,需要将数据解析为断言可以使用的 JavaScript 对象。
解析 JSON 数据:
const responseJson = apt.response.json;
解析 XML:
const responseJson = xml2Json(apt.response.text());
解析 CSV:
const responseJson = csv2array(apt.response.text());
4、处理不解析的响应
格式不是 JSON、XML、HTML、CSV 或任何其他可解析的数据格式,无法将响应正文解析为 JavaScript,可以通过以下方法对数据进行断言。
测试响应主体是否包含字符串:
apt.test("Body contains string",() => {apt.expect(apt.response.text()).to.include("customer_id");
});
不能得到字符串的具体位置,因为它是对整个响应主体进行测试。也不能知道测试响应是否与字符串匹配(通常只对短响应有效):
apt.test("Body is string", function () {apt.response.to.have.body("whole-body-text");
});
五、对 HTTP 响应进行断言
可以检查请求响应的body、status codes、headers、cookies、response times等等。
1、测试响应体
检查响应正文中的特定值:
apt.test("Person is Jane", () => {const responseJson = apt.response.json;apt.expect(responseJson.name).to.eql("Jane");apt.expect(responseJson.age).to.eql(23);
});
2、测试状态码status
测试响应状态码:
apt.test("Status code is 201", () => {apt.response.to.have.status(201);
});
如果你想测试状态代码是否是一组中的一个,请将它们全部包含在一个数组中并使用oneOf:
apt.test("Successful POST request", () => {apt.expect(apt.response.code).to.be.oneOf([201,202]);
});
查看状态码文本:
apt.test("Status code name has string", () => {apt.response.to.have.status("Created");
});
3、测试响应头header
检查是否存在响应标头:
apt.test("Content-Type header is present", () => {apt.response.to.have.header("Content-Type");
});
测试具有特定值的响应标头:
apt.test("Content-Type header is application/json", () => {apt.expect(apt.response.headers['Content-Type']).to.eql('application/json');
});
4、测试 cookie
测试响应中是否存在 cookie:
apt.test("Cookie JSESSIONID is present", () => {apt.expect(apt.response.cookies['cookie-test1']).to.not.be.undefined;
});
测试特定的 cookie 值:
apt.test("Cookie isLoggedIn has value 1", () => {apt.expect(apt.response.cookies['cookie-test1']).to.eql('0');
});
5、测试响应时间是否在指定范围内
apt.test("Response time is less than 200ms", () => {apt.expect(apt.response.responseTime).to.be.below(200);
});
六、测试响应码
apt.response.to.be 是用来快速断言的一系列内置规则。
1、检查状态码是否为1XX
apt.response.to.be.info
2、检查状态码是否为2XX
apt.response.to.be.success
3、检查状态码是否为3XX
apt.response.to.be.redirection
4、检查状态码是否为4XX
apt.response.to.be.clientError
5、检查状态码是否为5XX
apt.response.to.be.serverError
6、检查状态码是否为4XX或5XX
apt.response.to.be.error
7、检查状态码是否为200
apt.response.to.be.ok
8、检查状态码是否为202
apt.response.to.be.accepted
9、检查状态码是否为400
apt.response.to.be.badRequest
10、检查状态码是否为401
apt.response.to.be.unauthorized
11、检查状态码是否为403
apt.response.to.be.forbidden
12、检查状态码是否为404
apt.response.to.be.notFound
13、检查状态码是否为429
apt.response.to.be.rateLimited
ApiPost的断言功能相关推荐
- 接口测试--apipost接口断言详解
在做接口测试的时候,会对接口进行断言,一个完整的接口测试,包括:请求->获取响应正文->断言. 一.apipost如何进行断言 apipost的断言设置实在后执行脚本中进行编写的.apip ...
- python中case的用法_如何在Python中使用TestCase实现一个断言功能
如何在Python中使用TestCase实现一个断言功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题. Python TestCase断 ...
- assertion python_【Python】断言功能Assertion
转自 https://www.cnblogs.com/cicaday/p/python-assert.html Python Assert 为何不尽如人意 Python中的断言用起来非常简单,你可以在 ...
- apipost如何设置断言
前言 apipost断言是JavaScript语言编写的,在apipost客户端后执行脚本处即可.断言会在请求返回之后,运行,并根据断言的pass\fail情况体现在最终测试结果中. 一.首先编写一个 ...
- 比Postman更懂中国程序员,Apipost真香!
最近被身边几个做开发的朋友安利了一款国产的 API 开发调试神器,真的有被惊艳到!!!简直不要太好用! 没想到,中国竟然有比 Postman 还好用的软件! 这个API 开发调试神器就是 ApiPos ...
- 接口测试--自定义断言设置
接口测试的时候,有时候会对接口进行断言,apipost在后执行脚本中提供了断言功能 apt.assert('response.raw.responseText=="test"'); ...
- Apipost 基于设计、开发、测试一体化协作接口管理平台
✊ 基于协作,更懂中国程序员.不止于API文档.调试.Mock ✊ Apipost = Postman + Swagger + Mock后端.前端.测试同时在线编辑,内容实时同步 一.Apipost介 ...
- 贼好用的自动化测试工具:Apipost!
对于一个互联网公司来说,测试人员是公司里不可缺少的一个角色.但从事软件测试的人员不计其数,每年都有很多毕业生卷入互联网的大军.如果一个测试人员的能力还只停留在点点点上,自然是会被新一代的"卷 ...
- 发现了一款宝藏工具:Apipost,你用过它吗?
在日常的开发过程中,大家使用过最多的接口测试工具是什么呢? 相信不少同学,脑海中浮现的第一个答案就是postman. 在博主日常使用过程中,发现了一款比它更好用的工具,并且,它居然还是国产软件!今天国 ...
最新文章
- Django-Model操作数据库(增删改查、连表结构)参考
- Android布局管理器-从实例入手学习相对布局管理器的使用
- discuz数据从godaddy主机中导出的mysql数据乱码变问号???的解决方法
- 2011年值得注意的5个设计趋势
- linux 磁盘控制器,linux – 戴尔R710上的PERC 6 / i RAID:单个控制器上的慢速磁盘…… RAID10?...
- The Vector Packet Processor (VPP)的安装
- php ==gt;,谈谈PHP中的 -gt;、=gt; 和 :: 符号 - 易采站长站
- C Tricks(三)—— 以一维数组的形式对二维数组赋值
- 读《如何阅读一本书》乱摘
- qlv文件怎么转成mp4格式?qlv转mp4格式步骤详解
- 吴军的《见识》书的核心内容
- 软测(三)测试用例基本介绍
- Linux中常用的文件目录,Linux学习笔记2——Linux中常用文件目录操作命令
- JVM-从熟悉到精通
- 中兴以太网板see服务器地址,中兴传输以太网板数据配置.ppt
- 关于Android动画的一点愚见
- 突发,韩国三星发生重大变化!
- 【推荐】比IPH5更爱疯的G5
- TIB --- FS
- BS1039-基于Python+BS架构开发实现在线图书管理系统