写点什么

5 年程序员问我:什么是断言?

用户头像
CodeNongXiaoW
关注
发布于: 刚刚
5年程序员问我:什么是断言?

响应以及断言

在“发送 HTTP 请求”一讲中,我们讲解了 APIPOST 中响应数据的查看。

API 请求响应

点击发送按钮后,如果有数据返回,则会显示返回数据,响应时间,响应码,Cookie 等。



注意:返回数据默认是 ==美化== 模式,便于查看 JSON XML 格式。您可以通过切换 ==原生== 或 ==预览== 模式 查看其它类型的类型。

返回 Headers


除了查看结果外,ApiPost 也提供了强大的测试校验功能。在这里我们也可以使用断言来进行响应结果的校验。

响应结果分屏展示

在 APIPOST 5.4 版本后,支持“响应结果分屏展示”,从而提升工作区的空间。



什么是断言?

协作开发,版本升级,服务器升级,接口返回有可能因为一些 bug,和我们预期结果不一致。为了便于开发 &测试人员能够更快的发现 bug,有利于整个产品质量以及进度的保证。我们推出断言功能。

如何使用断言?

  1. 定义测试用例

  2. 验证测试用例


例如接口返回:


{  "errcode": 0,  "errstr": "success",  "post": [],  "get": [],  "request": [],  "put": "",  "header": {    "Host": "echo.apipost.cn",    "Connection": "keep-alive",    "Content-Length": "0",    "Accept": "application/json, text/javascript, */*; q=0.01",    "Accept-Encoding": "gzip, deflate, br",    "Accept-Language": "zh-CN",    "Content-Type": "application/json",    "Cookie": "PHPSESSID=n3k73k06o6ghnie4e9re4rbf0t",    "Origin": "https://echo.apipost.cn",    "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1"  }}
复制代码


定义测试用例:


apt.assert('response.raw.status==200');apt.assert('response.raw.type=="json"');apt.assert('response.json.errcode==0');apt.assert('response.raw.responseTime<100');apt.assert('response.json.header.Host=="echo.apipost.cn"');
复制代码


点击发送按钮后:



绿色表示测试通过,红色表示测试不通过。


特别注意:==每个测试用例是一行,不能换行。==


例:apt.assert('response.json.header.Host=="echo.apipost.cn"');


1)response.json.header.Host 表示响应 json 下面的 header 数组中的 Host 字段,2)必须都为 1,才会通过。


常见的测试用例可以通过后执行脚本获取:


更多响应参数变量

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字段apt.assert('response.json.errcode=="success"');  // 检测返回json对象的errcode字段是否等于success字符串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>=1');  // 检测返回json对象的errcode字段是否大于1apt.assert('response.json.errcode==null'); // 检测返回json对象的errcode字段是否是null
复制代码


3、测试 response Headers 中的某个元素是否存在(如:Content-Type)


apt.assert('response.headers.hasOwnProperty("content-type")');
复制代码


4、验证 Status code(响应码)的值是不是等于 200


apt.assert('response.raw.status==200');
复制代码


5、验证 Response time(请求耗时)是否大于某个值


apt.assert('response.raw.responseTime>=100');
复制代码


6、验证返回类型是不是 json


apt.assert('response.raw.type=="json"');
复制代码


发布于: 刚刚阅读数: 2
用户头像

CodeNongXiaoW

关注

还未添加个人签名 2019.02.19 加入

还未添加个人简介

评论

发布
暂无评论
5年程序员问我:什么是断言?