文章目录

  • 一、如何使用断言
  • 二、响应参数变量
    • 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,保证整个产品的质量以及进度,于是推出了断言功能。

  1. 定义测试用例(即:后执行脚本)
  2. 验证测试用例(查看断言与校验结果,红色代表未通过,绿色代表通过)

二、响应参数变量

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的断言功能相关推荐

  1. 接口测试--apipost接口断言详解

    在做接口测试的时候,会对接口进行断言,一个完整的接口测试,包括:请求->获取响应正文->断言. 一.apipost如何进行断言 apipost的断言设置实在后执行脚本中进行编写的.apip ...

  2. python中case的用法_如何在Python中使用TestCase实现一个断言功能

    如何在Python中使用TestCase实现一个断言功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题. Python TestCase断 ...

  3. assertion python_【Python】断言功能Assertion

    转自 https://www.cnblogs.com/cicaday/p/python-assert.html Python Assert 为何不尽如人意 Python中的断言用起来非常简单,你可以在 ...

  4. apipost如何设置断言

    前言 apipost断言是JavaScript语言编写的,在apipost客户端后执行脚本处即可.断言会在请求返回之后,运行,并根据断言的pass\fail情况体现在最终测试结果中. 一.首先编写一个 ...

  5. 比Postman更懂中国程序员,Apipost真香!

    最近被身边几个做开发的朋友安利了一款国产的 API 开发调试神器,真的有被惊艳到!!!简直不要太好用! 没想到,中国竟然有比 Postman 还好用的软件! 这个API 开发调试神器就是 ApiPos ...

  6. 接口测试--自定义断言设置

    接口测试的时候,有时候会对接口进行断言,apipost在后执行脚本中提供了断言功能 apt.assert('response.raw.responseText=="test"'); ...

  7. Apipost 基于设计、开发、测试一体化协作接口管理平台

    ✊ 基于协作,更懂中国程序员.不止于API文档.调试.Mock ✊ Apipost = Postman + Swagger + Mock后端.前端.测试同时在线编辑,内容实时同步 一.Apipost介 ...

  8. 贼好用的自动化测试工具:Apipost!

    对于一个互联网公司来说,测试人员是公司里不可缺少的一个角色.但从事软件测试的人员不计其数,每年都有很多毕业生卷入互联网的大军.如果一个测试人员的能力还只停留在点点点上,自然是会被新一代的"卷 ...

  9. 发现了一款宝藏工具:Apipost,你用过它吗?

    在日常的开发过程中,大家使用过最多的接口测试工具是什么呢? 相信不少同学,脑海中浮现的第一个答案就是postman. 在博主日常使用过程中,发现了一款比它更好用的工具,并且,它居然还是国产软件!今天国 ...

最新文章

  1. Django-Model操作数据库(增删改查、连表结构)参考
  2. Android布局管理器-从实例入手学习相对布局管理器的使用
  3. discuz数据从godaddy主机中导出的mysql数据乱码变问号???的解决方法
  4. 2011年值得注意的5个设计趋势
  5. linux 磁盘控制器,linux – 戴尔R710上的PERC 6 / i RAID:单个控制器上的慢速磁盘…… RAID10?...
  6. The Vector Packet Processor (VPP)的安装
  7. php ==gt;,谈谈PHP中的 -gt;、=gt; 和 :: 符号 - 易采站长站
  8. C Tricks(三)—— 以一维数组的形式对二维数组赋值
  9. 读《如何阅读一本书》乱摘
  10. qlv文件怎么转成mp4格式?qlv转mp4格式步骤详解
  11. 吴军的《见识》书的核心内容
  12. 软测(三)测试用例基本介绍
  13. Linux中常用的文件目录,Linux学习笔记2——Linux中常用文件目录操作命令
  14. JVM-从熟悉到精通
  15. 中兴以太网板see服务器地址,中兴传输以太网板数据配置.ppt
  16. 关于Android动画的一点愚见
  17. 突发,韩国三星发生重大变化!
  18. 【推荐】比IPH5更爱疯的G5
  19. TIB --- FS
  20. BS1039-基于Python+BS架构开发实现在线图书管理系统

热门文章

  1. 前端大师炼成记:初中级前端成长指南
  2. 数据库系统原理及应用教程复习笔记(第3 版)
  3. ubuntu更新apt-get源
  4. 简易 J-Link 3.3V 兼容 5V 目标系统
  5. Shell循环----五角星
  6. 算法设计与分析股民解套问题
  7. 房产拍卖,300亿财富或清零,浙江女首富“抛物线式”的人生
  8. MFC模拟自动取款机
  9. Azure CDN:氮气加速已开启,司机们请做好准备
  10. 本人阅读过的优秀小说、文学作品等优秀书籍推荐