python测试-接口自动化测试
python测试-接口自动化测试
智汇君python测试-接口自动化测试
1 | 接口如果有很多参数的情况下,用程序模拟生成数据(数据驱动),使用工具或者框架加载数据自动化测试 |
1 | 接口测试往往连测试用例都不用提前写就可以测试 |
接口自动化的流程
自动化测试通过脚本(代码)模拟人工操作,自动化执行用例验证系统表现、并且输出结果。目的:
- 测试效率
- 准确率
- 可重复性
实战经验总结
分析文档(分析需求)
- 核心功能-用户端的体验
- 次要功能
- 辅助功能
- 理解:有的接口有安全性要求:需要先登录再使用。有的任务id需要动态获取(接口关联,数据库查询)
设计用例
- 用例标题:登录的账号可以删除任务
- 前置条件:1.已登录(得到了身份信息) 2.有任务(已经创建待删除任务)
- 测试步骤:1.得到任务ID 2.调用删除接口(结果1) 3.调用查询接口(结果2)
- 断言(验证结果):1.结果1 成功 2.结果2 失败
数据准备
- 可登录的账号
- 可测试的任务
- 数据驱动测试的数据文件
编写脚本
- 纯脚本
- 框架的用例
执行步骤
断言结束
python
接口客户端requests
HTTP协议客户端事实上的标准
劣势:1.不支持异步(测试不需要) 2.不支持HTTP2
1 | import requests |
推荐使用下面这种,上面的底层代码还是使用的下面这种:
1 | import requests |
requests.request的参数
行
- method:http请求方法
- url
- params:附加到url的参数(以字典形式传参)
头
- headers-添加请求头
- auth-指定鉴权的方式
- cookies-添加cookies
体
- data-表单数据
- files-上传文件
- json-json字符串
json
1 | import requests |
data
1 | import requests |
files
1 | import requests |
1 | import requests |
1 | import requests |
resp = requests.request(xxxx)
行
resp.status_code resp.reason
头
resp.headers resp.cookies
体
content:二进制响应正文
text:文本响应正文
json():将json响应转换成dict(可能会失败,因为响应体可能本身不是json字符串)
1 | resp.content |
requests.Session
session:(有多个请求构成)同一个对话过程
共享参数
如请求头(身份凭据)
共享网络
如:http协议基于tcp 需要3次握手、4次挥手,使用session可以之基于一次TCP连接
tcp/udp协议规定最大端口65535,每发起一次请求会在本地暂用一个端口,请求结束释放。如果同时请求本地端口数会占完,系统的其它功能也会受影响
共享cookies
自动合并多个请求的cookies
1 | import requests |
关联请求
接口关联:使用另一个接口的响应内容,作为下一个接口的请求参数(如:1.登录后,后续接口需要用之前登录返回的内容 2.查出来id再删id这条数据)
- 大部分接口都需要:共享参数(如身份凭据等信息)
- 个别接口才需要:全局变量
针对一个接口返回的内容是json字符串时,提取方式:
字典
jsonpath用法:1.针对字典 2.使用jsonpath语法 3.返回列表
正则
1 | # 这里这个一个案例,登录后响应体里有token |
测试时如果遇到一个流程涉及多个用户进行验证时,可以创建多个session








