软件测试 / 测试开发丨学习笔记之接口自动化测试
获取更多相关知识
本文为霍格沃兹测试开发学社学员学习笔记分享,文末附原文链接
一、 接口自动化测试框架介绍
1、 接口测试场景
2、 自动化测试场景
3、 接口自动化测试与 Web/App 自动化测试区别
接口关注数据无法触达用户体验。
4、 接口测试工具类型
5、 Requests
是由 Python 实现的 API 测试框架。
支持发起 POST, GET, PUT, DELETE 等请求。
可以用来验证和校对响应信息。
官网地址: requests.readthedocs.io/en/latest/
6、 Requests 优势
功能全面:HTTP/HTTPS 支持全面。
使用简单:简单易用,不用关心底层细节。
定制性高:结合测试框架完成二次封装,比如 HttpRunner。
7、 Requests 环境准备
安装命令:pip install requests
二、接口请求方法
1、 常见 HTTP 请求方法构造
2、 底层设计
3、 HTTP 协议知识
URL 结构
HTTP 请求
HTTP 响应
3、 构造 GET 请求
requests.get(url, params=None, **kwargs) url: 接口 url。 params:拼接在 url 中的请求参数,非必填,不填默认为 None。 **kwargs:更多底层支持的参数。
4、 构造 POST 请求
requests.post(url, data=None, json=None, **kwargs) url: 接口 url。 data:表单格式请求体。 json:JSON 格式请求体。 **kwargs:更多底层支持的参数。
5、 构造 PUT 请求
requests.put(url, data=None, **kwargs) url: 接口 url。 data:表单格式请求体。 **kwargs:更多底层支持的参数。
6、 构造 DELETE 请求
requests.delete(url, **kwargs) url: 接口 url。 **kwargs:更多底层支持的参数。
实战代码
7、 构造请求方法
requests.request(method, url, **kwargs)
method: 请求方法。 GET,OPTIONS,HEAD,POST,PUT,PATCH,DELETE。
url: 接口 url。
**kwargs:更多底层支持的参
8、 底层参数说明
三、接口请求参数
1、 请求参数简介
接口请求中携带的,会在路径之后使用?代表客户端向服务端传递的参数。
使用 key=value 形式拼接在 URL 中。
如果有多个,则使用 &分隔
例如:
2、 携带请求参数的方式
常用两种方式: 直接在 URL 中拼接:?username=Hogwarts&id=666。 通过 params 参数传递:requests.get(url, params)
3、 携带请求参数的 GET 请求
4、 携带请求参数的 POST 请求
四、接口请求头
1、 请求头信息的使用场景
身份认证
指定数据类型
例如:飞书接口文档
2、 请求头信息
HTTP 请求头是在 HTTP 请求消息中包含的元数据信息,用于描述请求或响应的一些属性和特征。
实际工作过程中具体要关注的头信息字段需要和研发沟通。
常见的头信息(下面表格):
3、 构造头信息
使用 headers 参数传入。
通常使用字典格式。
五、接口请求体-json
1、 接口请求体简介
进行 HTTP 请求时,发送给服务器的数据。
数据格式类型可以是 JSON、XML、文本、图像等格式。
请求体的格式和内容取决于服务器端 API 的设计和开发人员的要求。
例如:飞书接口文档
2、常用接口请求体
3、 JSON 简介
JavaScript Object Notation 的缩写。
是一种轻量级的数据交换格式。
是理想的接口数据交换语言。
Content-Type 为 application/json。
4、构造 JSON 格式请求体
定义为字典格式。
使用 json 参数传入。
六、接口响应断言
1、 接口断言使用场景
问题: 如何确保请求可以发送成功。 如何保证符合业务需求。
解决方案: 通过获取响应信息,验证接口请求是否成功,是否符合业务需求。
2、 Requests 中的响应结果对象
3、 响应结果类型
4、 响应状态码断言
基础断言: r.status_code
七、json 响应体断言
1、 JSON 响应体
JSON 格式的响应体指的是 HTTP 响应中的消息体(message body),它是以 JSON 格式编码的数据。
2、断言 JSON 格式响应体使用场景
验证 API 接口的返回结果是否符合预期。 业务场景上是否符合预期。 格式是否符合文档规范。
3、 断言 JSON 格式响应体
r.json():返回 python 字典。
4、 若碰到复杂断言应该如何处理?
多层嵌套的数据提取与断言: JSONPath
整体结构响应断言: JSONSchema
自行编写解析算法
宠物商店接口自动化测试实战
实战思路
自动化测试脚本思路
日志配置:log_utils.py
代码优化
新建日志配置。
在用例中使用配置好的日志实例。
使用 pytest parametrize 装饰器实现宠物状态的参数化。
测试报告添加标题
版权声明: 本文为 InfoQ 作者【测试人】的原创文章。
原文链接:【http://xie.infoq.cn/article/367820f341729573f279b5116】。文章转载请联系作者。
评论