接口测试实战接口测试之断言实战
Posted 黑黑白白君
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口测试实战接口测试之断言实战相关的知识,希望对你有一定的参考价值。
前情:
《【接口测试实战(二)】根据接口文档使用postman测试》
文章目录
1)什么是断言?
断言其实就是预期与实际结果的判断,即检查点。
- 如果预期==实际,则用例通过,写到报告中。
- 如果预期!=实际,则用例失败,写到报告中。
断言通常是在HTTP响应中判断,一般看状态码和Body。
HTTP响应的构成:
- 状态行
- Headers
- Body
2)postman的Tests功能
POSTMAN官方文档中对于Tests的描述:
"You can write test scripts for your Postman API requests in javascript. Tests allow you to ensure that your API is working as expected, to establish that integrations between services are functioning reliably, and to verify that new developments haven’t broken any existing functionality. "
(您可以使用 JavaScript 为 Postman API请求编写测试脚本。通过测试,您可以确保 API 按预期工作,确定服务之间的集成运行可靠,并验证新开发没有破坏任何现有功能。)
本质上是javascript code,可以为tests object设置values。
- 这里使用描述性文字作为key,检验body中的各种情况,当然你可以创建任意多的key,这取决于你需要测试多少点。
- tests也会随着request保存到collection中。
- 需要在request的test中创建了test后,再进行request,test的结果在body的test中查看。
- postman每次执行request的时候,会执行tests。测试结果会在tests的tab上面显示一个通过的数量。
- postman的测试是运行在沙箱环境,是与app独立的。查看什么在沙箱中是可用的,参见Sandbox documentation。
- Snippets用于快速添加常用的测试代码。可以自定义snippets。
3)实战:通过断言测试7日天气接口
3.1 七日天气接口简介
接口来源:http://www.tianqiapi.com/index
包含基本天气、温度、风力风向等,可按地名、城市编号、IP查询。
请求方式及url:
请求方式:GET
接口地址:https://tianqiapi.com/free/week
请求参数说明:
参数名 | 必选 | 类型 | 说明 | 备注(示例) |
---|---|---|---|---|
appid | 是 | string | 用户appid | 注册开发账号 |
appsecret | 是 | string | 用户appsecret | |
cityid | 否 | string | 城市ID | 请参考 城市ID列表 |
… | … | … | … | … |
响应参数说明:
参数名 | 类型 | 说明 | 备注 |
---|---|---|---|
cityid | String | 城市ID | |
city | String | 城市名称 | |
update_time | String | 更新时间 | |
date | String | 预报日期 | |
… | … | … | … |
3.2 设计断言
从响应内容做断言。比如可以断言:
- 状态码等于200
- city=“深圳”
- 返回7天的天气情况
3.3 断言的应用
- Tests tab:可以手动输入 JavaScript 或使用代码编辑器右侧看到的代码段(Snippets)。
- Snippets:断言常用的函数。
填写断言代码并进行测试:
一个完整的接口测试,包括:请求->获取响应正文->断言。
可以看到一共有Tests的断言3个,点击Send,发送请求,在Test Results内可以看到PASS表示断言通过,FAIL表示断言失败。
注意:
- 这边为了看fail的情形,把最后一个断言的判断改掉了,实际上是3个PASS。
- 截图左侧是console,从view->Show Postman Console打开。
-
判断statusCode的值是200:
在SNIPPETS中,有一项”Status code:Code is 200”,这个就是判断HTTP返回状态码是否为200。
pm.test("状态码必须是200", function () { pm.response.to.have.status(200); }); //判断状态码为200
- pm.test中的test是一个内置对象(函数),"Status code is 200"是指为这个断言起个名称叫”Status code is 200”,这个名称可以自行修改。
- pm.response.to.have.status(200)中的responseCode是内置对象,responseCode对象中有个属性是code,是指HTTP状态码的code,判断code是否为200。
-
判断返回的为7日的数据:
var jsonData = JSON.parse(responseBody); // console.log(jsonData.data.length); //记日志,作调试 tests["返回7日的数据"] = jsonData.data.length === 7;
- JavaScript 使用关键字 var 来定义变量, 使用等号来为变量赋值。
- 使用 JSON.parse() 方法将数据转换为 JavaScript 对象。解析前要确保数据是标准的 JSON 格式,否则会解析出错。
- length 属性可设置或返回数组中元素的数目。
4)Postman pm 对象
pm 对象还提供了测试相关功能:
-
pm.test 函数
用来生成一个测试,可以输入测试标题,并加入各种断言。- 断言全部成功则测试成功,某一个断言失败则测试失败。
- 一个请求可以添加多个测试函数。
-
pm.expect 函数
用来生成各种断言。 -
pm.response 对象
提供了很多内置的断言语句。
详情可参考:Postman pm 对象 - 测试相关功能
5)postman常见断言方法
后续补充。
暂可参考https://www.cnblogs.com/suim1218/p/8931159.html 和
https://www.cnblogs.com/ceshi2016/p/7281361.html
【部分内容参考自】
- postman logoLearning Center:https://learning.postman.com/docs/writing-scripts/test-scripts/
- Postman接口测试之断言:https://www.jianshu.com/p/5e69f2a304f8
- postman的使用方法详解!最全面的教程:https://www.cnblogs.com/jpfss/p/9082542.html
以上是关于接口测试实战接口测试之断言实战的主要内容,如果未能解决你的问题,请参考以下文章