apiAutoTest/README.md

136 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# apiAutoTest[![GitHub license](https://img.shields.io/github/license/zy7y/apiAutoTest)](https://github.com/zy7y/apiAutoTest/blob/master/LICENSE)
> 使用Python为语言工具 + Python第三方库 实现的接口自动化测试工具
## 实现功能
- 测试数据隔离: 测试前后进行数据库备份/还原
- 接口直接的数据依赖: 需要B接口使用A接口响应中的某个字段作为参数
- 对接数据库: 讲数据库的查询结果可直接用于断言操作
- 动态多断言: 可(多个)动态提取实际预期结果与指定的预期结果进行比较断言操作
- 自定义扩展方法: 在用例中使用自定义方法(如:获取当前时间戳...)的返回值
- 邮件发送将allure报告压缩后已附件形式发送
## 依赖库
```
allure-pytest==2.8.17 # allure报告
jsonpath==0.82 # json解析库
loguru==0.5.1 # 日志库
pytest==6.0.1 # 参数化
PyYAML==5.3.1 # 读取ymal
requests==2.24.0 # 请求HTTP/HTTPS
xlrd==1.2.0 # 读取excel
yagmail==0.11.224 # 发送邮件
PyMySQL==0.10.1 # 连接mysql数据库
pytest-rerunfailures==9.1.1 # 用例失败重跑
paramiko==2.7.2 # SSH2 连接
```
## 目录结构
```shell
├─api
│ └─base_requests.py # 请求封装
├─backup_sqls
│ └─xxx.sql # 数据库备份文件
├─config
│ └─config.yaml # 配置文件
├─data
│ └─test_data.xlsx # 用例文件
├─log
│ └─run...x.log # 日志文件
├─report
│ ├─data
│ └─html # allure报告
├─test
│ ├─conftest.py # 依赖对象初始化
│ └─test_api.py # 测试文件
├─tools # 工具包
│ ├─__init__.py # 常用方法封装
│ ├─data_clearing.py # 数据隔离
│ ├─data_process.py # 依赖数据处理
│ ├─db.py # 数据库连接对象
│ ├─hooks.py # 自定义扩展方法(可用于用例)文件
│ ├─read_file.py # 用例、配置项读取
│ └─send_email.py # 邮件发送、报告压缩
├─项目实战接口文档.md # 配套项目相关接口文档
├─requirements.txt # 项目依赖库文件
└─run.py # 主启动文件
```
## 安装教程
1. git clone https://gitee.com/zy7y/apiAutoTest.git / https://github.com/zy7y/apiAutoTest.git
2. 安装Java与allurehttps://www.cnblogs.com/zy7y/p/13403699.html
3. 使用pycharm打开项目使用Terminal 输入 python3 -m venv venv 新建虚拟环境 (可选)
4. 执行pip install -r requirements.txt 安装依赖库若下载超时pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
5. 修改config.ymal文件中email文件配置邮箱request_header配置初始请求头database 配置数据库信息
6. 运行 `run.py`文件
## 用例说明文档
![case_data.xlsx用例说明文档](https://gitee.com/zy7y/blog_images/raw/master/img/用例说明文档.png)
## 使用说明
1. 本项目直接使用的requests.Session理论上实现了cookie请求的管理不用单独提取cookie支持前后端分离项目兼容Restful接口规范。
2. 项目中token操作中为写时请务必保证是能正常获得响应并且返回了token字段
3. 本项目用例书写格式请务必遵循sheet页用例说明中有一部分
4. 该项目找的是b站上的一个前后端分离应用域名使用的是b站某视频里提供的请大家谨慎操作学习
5. 本项目所要投入生产请自行修改配置文件config.yaml及用例数据case_data.xlsx
6. 默认注释了用例失败重跑装饰器,需要的时候自行解除注释即可,但这个功能比较耗时间,自取所需吧
7. 本项目从2020年8月提交陆续迭代如果各位有什么建议 欢迎提给我,会尽力解决~~
## 接口服务(后端源码来自)
vue 电商项目实战
教学视频:
https://www.bilibili.com/video/BV1EE411B7SU?p=10
服务提供者https://space.bilibili.com/283273603?spm_id_from=333.788.b_636f6d6d656e74.6
## 测试报告
![本地运行测试后生成报告](https://gitee.com/zy7y/blog_images/raw/master/img/localhost_report.png)
![测试报告用例失败重跑](https://gitee.com/zy7y/blog_images/raw/master/img/用例失败重跑截图.png)
## 更新记录
2020/08/08 增加实际响应存储数据的方法并在字典可以处理依赖见tools/svae_response.py
2020/08/09 实现多文件上传接口中Path参数依赖处理
2020/11/18 使用re库解决当请求参数层级结构多出现无法提取的bug减少冗余代码优化path路径参数提取更新用例填写说明文档
2020/11/21 更新用例文档,合并文件对象,文件地址,优化文件上传处理方式
2020/11/21 config.yaml文件中新增request_headers 选项默认header在此设置优化test_api.py文件整合read_file.py
2020/11/22 优化请求断言方法支持用户自定义提取响应自定内容,支持多数据断言,整合请求方法,优化测试启动方法,部分日志移除,修改预期结果处理
2020/12/08 优化断言信息增加数据库支持mysql查询操作 使用`@pytest.fixture(scope="session")`来托管数据库对象用例新增sql栏
2020/12/16 使用conftest.py 初始化用例, 增加失败重跑机制, 增加运行文件run优化test_api.py冗余代码
2021/01/19 添加数据清洗功能(测试开始前进行数据库备份-分别在服务器和本地进行,测试结束后将备份用以恢复数据-将尝试从服务器和本地恢复到服务器数据库中docker部署的mysql服务已本地调试通过直接linux部署的mysql并未测试)
> 详细内容见代码注释`tools/data_clearing.py`
> 如不需要使用该功能请做如下处理,如也不使用数据库对象,只需参考 https://gitee.com/zy7y/apiAutoTest/issues/I2BAQL 修改即可
![](https://gitee.com/zy7y/blog_images/raw/master/img/20210119184856.png)
2021/02/27 添加hooks.py文件(可在此处自定义方法,并用于用例当中注意请务必在定义的方法中使用return),移除上次更新的eval语法糖增加用例处理前的日志
2021/05/04 用例增加Header栏可使用自定义方法以及提取参数如下所以取消了 `token操作栏`
![](https://gitee.com/zy7y/blog_images/raw/master/img/20210504121842.png)
![](https://gitee.com/zy7y/blog_images/raw/master/img/20210504122609.png)
![](https://gitee.com/zy7y/blog_images/raw/master/img/20210504234703.png)
![](https://gitee.com/zy7y/blog_images/raw/master/img/20210504234820.png)
## 博客园首发
https://www.cnblogs.com/zy7y/p/13426816.html
## Jenkins集成
https://www.cnblogs.com/zy7y/p/13448102.html
## 视频教程该视频为2020年8月开源时录制大致内容是简单讲个文件作用其代码对应目前的version1.0分支)
B站https://www.bilibili.com/video/BV1pv411i7zK/
## 联系我
QQ群851163511没技术大佬本站上的个人项目问题都可以在这里咨询