# api_automation_test **Repository Path**: d_xianting/api_automation_test ## Basic Information - **Project Name**: api_automation_test - **Description**: 接口自动化,支持自动断言、接口参数传递、SQL处理、自动压缩打包、allure测试报告、TFTP、钉钉报错信息 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 1 - **Created**: 2021-07-21 - **Last Updated**: 2025-06-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # api_automation_test #### 介绍 Python+Requests+jsonpath+yaml接口自动化测试工具,实现数据依赖,支持restful规范,sql断言以及测试前后数据隔离操作,自定义扩展方法,可作用于用例当中 #### 软件架构 | 名称 | 版本 | 作用 | | -------- | -------- | ---- | | python | 3.7.4 | | | pytest | 6.0.1 | 底层单元测试框架,用来实现参数化,自动执行用例 | | allure-pytest | 2.8.17 | allure与pytest的插件可以生成allure的测试报告 | | jsonpath | 0.82 | 用来进行响应断言操作 | | loguru | 0.54 | 记录日志 | | PyYAML | 5.3.1 | 读取yml/yaml格式的配置文件 | | Allure | 2.13.5 | 要生成allure测试报告必须要在本机安装allure并配置环境变量 | | yaml | 5.4.1 | 用来读取yaml中的测试用例数据 | yagmail | 0.11.224 | 测试完成后发送邮件 | | requests| 2.24.0 | 发送请求 | |pymysql|0.10.1|连接mysql(需要则添加不需要则略过)| |paramiko|2.7.2|ssh连接linux服务器,用于备份/删除数据库文件 #### 目录结构 >api_automation_test > >> .pytest_cache(文件夹): pytest运行测试文件的时候产生的文件 >> >> api(包):主请求 >> >> > `__init__`.py >> > >> > base_requests.py: 封装了get、post、put、delete等接口请求 >> >> case(用例文件夹) >> > test_api_auto.py 申请人推广用例 > >> common >> tools 工具包(配置各种数据处理以及函数执行) >> > data_cleaing.py 处理FTP、MYSQL 操作 >> >> > data_process.py 处理接口请求的数据拼接 >> >> > db.py 执行SQL语句的文件 >> >> > dingding_push.py 推送钉钉信息(需要在config.py中配置文件) >> >> > hooks.py 执行在数据文件中需要执行的函数 >> >> > path_dir.py 获取目录 >> >> > read_file.py 读取Excel、json、yaml文件 >> >> > send_email.py 发送邮件 >> >> config(文件夹): 配置文件 >> >> > config.yaml: 脚本配置文件(sever、提取规则) >> >> data(文件夹) 用例数据 >> >> > case_data.yaml: 测试用例 >> >> >header_data.json header数据 >> >> output 输出文件(log、report) >> >> > log 日志文件 >> >> > report 测试报告 >> >> >> >> report(文件夹) 测试报告文件 >> >> > data : 每次执行测试用例的结果,存在这里 >> > >> > html: 使用了allure 的一个命令,生成的本地可视化的一个html报告 >> >> test(包): 运行文件所在包 >> > conftest.py: 存放可用于整个测试目录的方法 (2020/12/08 +) >> > test_api.py:Pytest 命令可直接运行的测试文件,里面是我们的主函数 >> >> tools(包): 工具包 >> >> >`__init__.py` >> > >> >data_process.py:封装依赖数据与请求数据的逻辑处理,处理了path参数依赖,headers关键字参数的入参header >> > >> >db.py : 封装连接mysql方法 >> >read_file.py: 读取配置文件、读取excel用例文件 >> > >> >data_clearing.py: 数据清洗方法封装,ssh2服务器连接,数据库备份/恢复 2021/01/19日更新 >> > >> > >> >send_email.py : 发送邮件 >> > >> >zip_file.py : 压缩测试报告 >> >> venv: python 虚拟环境 >> >> >> pytest.ini: pytest框架的一个可用配置,解决中文显示乱码 >> >> requirements.txt: 依赖库 >> >> >> run.py: 主运行文件 >> #### 安装教程 1. git clone git@gitee.com:taylortaurus/apiAutoTest.git 2. 安装Java与allure,https://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. ~~运行/test/test_api.py 文件~~ 6. 运行 `main.py`文件 #### 使用说明 1. 本项目直接使用的requests.Session理论上实现了cookie请求的管理,不用单独提取cookie,支持前后端分离项目,兼容Restful接口规范。 2. 项目中token操作中为写时,请务必保证是能正常获得响应并且返回了token字段 3. 本项目用例书写格式请务必遵循,按照yaml中的数据配置,一个list则一条用例 4. 该项目找的是b站上的一个前后端分离应用,域名使用的是b站某视频里提供的,请大家谨慎操作学习 5. 本项目所要投入生产,请自行修改配置文件config.yaml及用例数据case_data.yaml, 6. 默认注释了用例失败重跑装饰器,需要的时候自行解除注释即可,但这个功能比较耗时间,自取所需吧 #### 测试报告 ![本地运行测试后生成报告](./output/时间戳/report) > 详细内容见代码注释`tools/data_clearing.py` > 如不需要使用该功能请做如下处理,如也不使用数据库对象,只需参考 https://gitee.com/zy7y/apiAutoTest/issues/I2BAQL 修改即可 ![](https://gitee.com/zy7y/blog_images/raw/master/img/20210119184856.png) 2021/01/27 添加eval语法糖,请求数据需要上个接口返回的id+1,实现基本的数学预算,使用形式具体查看excel用例文件及用例描述页,与报告对着看 ![](https://gitee.com/zy7y/blog_images/raw/master/img/20210127141257.png)