
ApiTesting全链路接口自动化测试框架 - 初版(一)
发布日期:2021-05-09 04:23:12
浏览次数:22
分类:精选文章
本文共 2177 字,大约阅读时间需要 7 分钟。
接口自动化测试框架详解
1.框架概述
本框架为Python+Pytest+Requests+Allure+Yaml+Json组成的接口自动化测试解决方案,旨在简化测试流程,提升效率,适用于大数据业务和多依赖接口场景。通过自动化解析接口数据包,自动生成测试用例和脚本,减少手动编写的工作量,确保测试的可维护性和扩展性。
2.主要功能模块
2.1 接口数据解析
- 从Charles工具导出的接口数据包中提取所需信息,自动解析接口基本信息、请求参数和返回数据。
- 支持多种数据格式存储,复杂数据单独保存为JSON文件,确保数据管理的灵活性。
2.2 前置接口处理
- 自动识别并处理前置接口的依赖关系,通过指定相对路径调用前置接口,无需手动编写关联数据。
- 提供替换关联值功能,自动处理前置接口返回的关联参数。
2.3 参数化处理
- 采用常用变量标识符
${var}
,通过正则表达式自动检索变量。 - 提供多种函数助手,包括随机数生成、日期时间生成、唯一标识生成等,帮助构建多样化测试数据。
2.4 测试脚本生成
- 基于模板文件,复制并修改相关字段,生成适配具体测试用例的测试脚本。
- 支持多线程执行和失败重试,提升测试效率和稳定性。
2.5 测试结果校验
- 提供多种校验方式,包括不校验、仅校验状态码、JSON格式校验、完全校验和正则匹配校验。
- 结合Allure生成测试报告,详细记录测试过程和结果。
2.6 测试报告生成
- 自动生成Allure报告,支持HTML和XML格式导出,便于测试结果的可视化和分析。
3.运行模式
框架支持四种运行模式,满足不同开发需求:
0 - 不开启自动生成功能
- 直接运行现有测试脚本,无需生成新用例。
1 - 手动编写用例
- 根据手写的测试用例自动生成对应的测试脚本,然后执行测试。
2 - 接口抓包驱动
- 根据接口数据包自动生成完整的测试用例和脚本,并运行测试。
- 适用于无需手动编写测试用例的场景。
3 - 生成测试用例和脚本
- 根据接口数据包生成测试用例和脚本,但不执行测试。
- 适用于需要提前审阅测试脚本的场景。
4.核心代码解析
框架核心代码主要包括以下几个模块:
4.1 接口数据解析
writeCaseYaml.py
:从Charles导出的JSON Session File中提取接口信息,生成测试用例和参数文件。writeCase.py
:根据指定路径生成测试脚本,支持模板替换和参数替换。
4.2 测试脚本执行
apiSend.py
:封装了发送接口请求的逻辑,支持多种HTTP方法和文件上传。initializePremise.py
:处理前置接口和关联值,确保测试环境的一致性。
4.3 测试结果校验
checkResult.py
:提供多种校验方式,确保接口返回结果的准确性。- 结合Allure工具,生成详细的测试报告。
4.4 功能助手
randomly.py
:提供随机数、日期时间、GUID等功能,辅助测试数据的生成。replaceRelevance.py
:处理变量替换和表达式计算,提升数据的动态性。
5.项目结构
框架的项目目录结构为:
MyTest/├── startup.py # 启动脚本,处理运行模式和日志初始化├── runConfig.yml # 运行配置说明├── test_template.py # 测试脚本基础模板├── apiConfig.yml # 接口配置示例├── test.yaml # 测试用例说明├── allure.html # 测试报告示例└── requirements.txt # 项目依赖管理
6.使用步骤
环境准备
- 安装依赖:
pip install -r requirements.txt
- 使用PyCharm或其他IDE打开项目,自动下载并安装依赖。
接口数据收集
- 使用Charles工具抓包,导出JSON Session File(.chlsj格式)。
配置项目
- 新建
MyTest
目录和data
子目录,将抓取的接口数据包放入。 - 修改
runConfig.yml
中的项目名为MyTest
。
运行测试
- 根据运行模式选择:
python startup.py
(默认运行模式0)python startup.py 2
(接口驱动模式,自动生成并运行测试)
查看测试报告
- 测试完成后,生成
allure
报告,查看allure.html
文件。
7.优化建议
代码优化
- 将常用功能模块提取为单独的函数或类,提升代码可读性。
- 引入缓存机制,减少重复计算和数据库查询。
日志优化
- 增加日志级别,区分信息日志、警告和错误,方便排查问题。
- 支持日志输出到控制台和文件,提升监控能力。
扩展功能
- 集成数据库连接模块,支持多种数据库类型的校验。
- 提供数据差异检测功能,识别新增或修改的数据项。
性能优化
- 对高频接口添加重试机制,避免因网络问题导致失败。
- 引入并发执行,提升测试效率。
8.总结
本框架通过自动化处理接口数据和测试流程,显著降低了手动编写和维护测试用例的工作量。其灵活性和扩展性使其适用于复杂的接口自动化测试场景,尤其适合大数据业务和多依赖接口的系统。未来计划加入数据库校验模块,进一步提升测试全面性和准确性。