接口测试 极简接口录制工具

simonpatrick · 2023年04月29日 · 最后由 tangoliver 回复于 2023年05月06日 · 7908 次阅读

极简接口录制工具

极简接口录制工具,之前看很多大佬说的录制回放平台,由于现实也有一些需要录制接口请求,所以想自己造一个.
但是成本不想太高,能用就可以,最后就花了一天时间左右时间完成了一个极简接口录制工具,主要功能包括了:

  1. 录制 API 请求到数据库比如 sqlite/postgresql/mysql
  2. 手工录制 API 的时候会手工设置浏览器代理,使用命令行或者 UI 的方式一键完成

录制的 API 请求主要作用是为了方便生成 API 测试代码,测试和开发都可以使用. 选择需要的 API 保存到数据库, 方便后续继续使用.

这个工具的好处就是:

  1. 成本很低. 就一天时间实现最需要的功能.
  2. 录制数据可以共享,不同的测试都可以分享这些录制数据
  3. 结合这些录制数据和现有工具,可以直接进行接口自动化测试代码转换

命令行工具 Commandline Features

  • 启动 mitmproxy 和自制插件录制 api 请求
poetry run qacli capture start --name="scenario_name"

  • 录制什么网站的请求可以在: configs/settings.toml 中配置
mitm = { recorded_url = "https://www.baidu.com,https://www.bing.com" }

上面的例子表示所有 baidu 和 bing 地址的请求都会被抓取保存到数据库.

  • 数据库表结构:
class ApiMonitorRecord(SQLModel, table=True):
    __tablename__ = "api_monitor_record"

    id: Optional[int] = Field(default=None, primary_key=True)
    app: Optional[str] = None
    service: Optional[str] = None
    api: Optional[str] = None
    path: Optional[str] = None
    request_url: Optional[str] = None
    method: Optional[str] = None
    request_headers: Optional[str] = None
    request_body: Optional[str] = None
    response_headers: Optional[str] = None
    status_code: int
    response_body: Optional[str] = None
    scenario_name: Optional[str] = None

  • turn on/off proxy for MAC:
 poetry run qacli mac-proxy --help

 Usage: qacli mac-proxy [OPTIONS] COMMAND [ARGS]...                                                                                                      

╭─ Options ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --help          Show this message and exit.                                                                                                           │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ off                  disable api capture proxy                                                                                                        │
│ on                   enable api capture proxy 

UI 界面功能 UI Feature

运行 UI:

poetry run qaui

UI 功能操作:

  • 输入录取的场景名称: 任何名字都可以
  • 操作相关页面,API 接口都会被录制
  • 查询数据库,所有这个场景名称的 API 请求都会被记录 sql select * from api_monitor_record where scenario_name=<your_record_name>
  • 可以对保存的数据进行批量转换成你需要的自动化测试或者数据准备工具

使用到 python 相关

主要包括了:

  1. typer: 命令行构建工具
  2. gradio: ui 构建工具
  3. 数据库操作:原先自己就有的基于 sqlmodel 的访问工具
  4. poetry: python 项目管理,打包/依赖管理

因为代码比较简陋也很少很少,如果想看下的可以前往: https://github.com/fluent-qa/fluentqa-helper

也可以关注: 自制极简接口录制工具
有兴趣的同学或想试试的时候有问题的可以给我留言.

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
最佳回复

不错,用的都是很快速就可以构建程序的技术栈,1 天就完成主要功能效率很高,点赞!

有计划后续基于这些录制数据,怎么进一步进行脚本生成之类的么?看到 github 项目的 TODO 有一个是代码生成,所以好奇问下。

共收到 3 条回复 时间 点赞

不错,用的都是很快速就可以构建程序的技术栈,1 天就完成主要功能效率很高,点赞!

有计划后续基于这些录制数据,怎么进一步进行脚本生成之类的么?看到 github 项目的 TODO 有一个是代码生成,所以好奇问下。

陈恒捷 回复

感谢大佬关注,这个已经有了,马上再写一篇,东西一点一点拼出来。不过都是低成本。

simonpatrick 专栏文章:极简接口录制的后台数据管理 中提及了此贴 05月06日 16:42
simonpatrick 专栏文章:极简接口录制的后台数据管理 中提及了此贴 05月06日 16:42
simonpatrick 专栏文章:极简接口回归测试: 录制回放模式 中提及了此贴 10月01日 11:32
simonpatrick 专栏文章:极简接口回归测试: 录制回放模式 中提及了此贴 10月01日 11:32
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册