写在前面

本人 40+ ,在帝都干了差不多 20 年的软件测试相关工作,基本上都算大厂或二线大厂吧,主要涉及反病毒主动防御等安全类客户端,Android 客户端,SaaS 系统等,去年起开始赋闲。前几天给一个朋友的团队做 HTTP 接口自动化分享,于是翻出了之前写的框架,略微整理下,主要是去掉了老东家用的 slack 告警,email 检查等,并完善了部分 README 内容,现在公开此方案,希望对有些朋友能有所帮助。
另外,大家使用中如果有什么问题和要求,可在此跟帖,或直接在 github 提 Issues,我抽空可能会回复哈。此外还写了个基于 playwright 的 web 自动化测试框架,过些天整理后也可能会公开分享。
API 自动化项目地址: https://github.com/wangdaqiao/Http_API_Auto

Python 3 实现 Http API 自动化 (pytest + requests + Allure)


主要思路和步骤

  1. 借助 Mitmproxy 来抓取产品使用中的 http api 接口数据
  2. 运行脚本 generate_newcases_from_api_record.py 处理上一步抓取到的接口数据,可生成新 api 的测试数据。
  3. 根据需要设置 api 的测试数据,补充到框架中。如完善 status code, 指定运行环境和优先级,提取参数变量,完善 jsonschema 校验等,通常仅需处理参数提取逻辑。
  4. 执行测试。

实现功能


整体结构

。。。。。。

用法

  1. 安装 Python 3.7+
  2. 下载代码。
  3. 在当前文件夹中,运行 pip install -r requirement.txt 安装依赖包
  4. 通过“allure2”安装 allure 2.1.38+
  5. 参考 “config” 子文件夹中的config_sample.yaml生成config.yaml文件,并进行配置。
  6. 如果是想体验下效果,可先进入 flask demo 目录,执行 python app.py 命令在本地启动一个 http 测试服务端,否则请忽略。
  7. 执行 python3 run_api_cases.py,完成后默认会自动打开测试报告网页。 另外,可以在第一个参数中指定运行环境,例如 python3 run_api_cases.py prod

补充:报告会有每个接口的 url,请求方法,payload,状态码,返回数据,如果失败,会注明失败原因,如状态码不符合预期,或返回的数据哪里与预期不符,不妨看看这个失败 case 的截图吧


↙↙↙阅读原文可查看相关链接,并与作者交流