+
DevOps研发效能
媒体矩阵
开源中国APP
授权协议 MIT
开发语言 Google Go
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 LinuxSuRen
适用人群 未知
收录时间 2023-04-17

软件简介

API Testing 是一个基于 YAML 文件的开源接口测试工具,同时支持运行在本地、服务端。

在选择工具时,可以从很多方面进行考量、对比,以下几点是该工具的特色或者优点:

  • 开源与否,atest 采用 MIT 开源协议,是最流行的宽松开源协议之一。有些工具也许有非常丰富的功能、漂亮的界面,但相比于开源项目,免费的工具不定什么时候就有可能变为收费的;而且,你的使用感受几乎很难直接反馈到产品中,只能被动接受。
  • 质量、可靠性,作为一款用于测试场景的工具,atest 本身的单元测试覆盖率达 89%,单测代码与业务逻辑代码量平分秋色;另外,每次代码改动都需要通过代码扫描、单元测试等流水线。
  • 身材小巧,整个工具大小为 18M,支持 Windows、Linux、macOS 平台。
  • 只有简单的可执行二进制文件,不像部分工具会给你的操作系统安装莫名其妙的系统启动项目、系统服务等。
  • 基于 YAML 文件,提交到 Git 仓库后,天生支持团队协作,无需注册额外账号。
  • 同时提供简单、高级两种模式的返回值断言,还包括 JSON Schema 以及针对 Kubernetes 资源的校验判断。
  • 支持性能测试。
  • 直接在 VS Code 中直接触发执行单个或整个测试文件。

如何使用?

那么,这个工具长什么样子呢,下面是命令行 atest 的参数说明:


API testing tool

Usage:

atest [command]

Available Commands:

completion Generate the autocompletion script for the specified shell

help Help about any command

json Print the JSON schema of the test suites struct

run Run the test suite

sample Generate a sample test case YAML file

server Run as a server mode

service Install atest as a Linux service

Flags:

-h, --help help for atest

Use "atest [command] --help" for more information about a command.

本地模式

执行一个测试用例集文件:atest run -p sample/testsuite-gitlab.yaml,其中的参数 -p 支持模糊匹配多个文件。

如果希望对测试用例集执行性能测试的话,可以增加响应的参数:

atest run -p sample/testsuite-gitlab.yaml --duration 1m --thread 3 --report m

其中的参数 --report 可以指定性能测试输出报告,目前支持 Markdown 以及控制台输出。效果如下所示:

| API | Average | Max | Min | Count | Error |

|---|---|---|---|---|---|

| GET https://gitlab.com/api/v4/projects | 1.152777167s | 2.108680194s | 814.928496ms | 99 | 0 |

| GET https://gitlab.com/api/v4/projects/45088772 | 840.761064ms | 1.487285371s | 492.583066ms | 10 | 0 |

consume: 1m2.153686448s

服务端模式

除了本地执行外,atest 还提供了基于 gRPC 协议服务端,通过下面的命令即可启动:


atest server

对于 Linux 操作系统,用户还可以通过下面的命令安装后台服务:


atest service (install | start | stop | restart)

当然,如果你对容器、Kubernetes 比较熟悉的话,本项目也提供了对应的支持。

这种模式,对于想要集成的用户而言,可以通过调用 gRPC 来执行测试。也可以安装 VS Code 插件,在编码与接口测试之间无缝切换,您可以搜索 api-testing 找到该插件。

插件会识别所有第一行是 #!api-testing 的 YAML 文件,并提供快速的执行操作,请参考如下截图:

如图所示,会有四个快捷执行操作:

  • run suite 会执行整个文件
  • run suite with env 会加载 env.yaml 文件并执行整个文件
  • run 执行单个测试用例(包括所依赖的用例)
  • debug 执行单个测试用例,并输出接口返回值

当你安装了 VS Code 插件后,会自动下载并安装 atest 及其服务。当然,你也可以配置不同的远端服务地址。

文件格式

atest 定义的 YAML 格式,基本遵循 HTTP 的语义,熟悉 HTTP 协议的同学即可快速上手。下面是一个范例,更多例子请参考这里


#!api-testing

name: Kubernetes

api: https://192.168.123.121:6443

items:

- name: pods

request:

api: /api/v1/namespaces/kube-system/pods

header:

Authorization: Bearer token

expect:

verify:

- pod("kube-system", "kube-ovn-cni-55bz9").Exist()

- k8s("deployments", "kube-system", "coredns").Exist()

- k8s("deployments", "kube-system", "coredns").ExpectField(2, "spec", "replicas")

- k8s({"kind":"virtualmachines","group":"kubevirt.io"}, "vm-test", "vm-win10-dkkhl").Exist()

用户可以自定义请求的 Header、Payload 等,可以对响应体做全面的断言判断。

后续计划

如果您已经耐心阅读到这里的话,可以再顺便了解下这个项目后续的一些想法。

通过更多的实际场景来打磨、优化 atest 对接口测试的便利性、可扩展性,以不丢失易用性为前提增强功能。例如:

  • 优化错误提示、反馈
  • 提供与 CICD 集成的最佳实践
  • 增加 gRPC 等协议的支持
  • 增加测试记录信息的持久化
  • VS Code 插件支持测试用例编写的提示、格式校验
  • 提供插件机制,增加对数据库等数据源的格式校验

最后期待您的反馈 https://github.com/LinuxSuRen/api-testing/issues

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击引领话题📣 发布并加入讨论🔥
发表了资讯
2025/08/01 14:06

开源接口工具 atest 发布 v0.0.20

atest 发布 v0.0.20 atest 是致力于为开发者提供一站式接口开发、测试的开源工具,无需注册账号、完全私有化部署、可扩展、可定制。 增加对正态分布随机函数的支持 (#761) @LinuxSuRen Web 页面支持快捷键绑定的特性,而且,用户可以通过配置文件修改 (#728) @LinuxSuRen Web 页面支持主题切换 (#715) @LinuxSuRen 优化欢迎页面布局 (#708) @Aditya-132 Mock 服务中增加 TCP 类型的代理 (#692) @LinuxSuRen 支持多线程下载插件 ...

0
3
发表了资讯
2025/03/17 13:45

atest v0.0.19 重磅更新!数据库+智能 Mock,让开发效率飙升!🚀

还在为接口测试与数据库联调头疼? 还在苦等后端接口才能推进前端开发? atest 开源工具全新升级,两大核心功能助你告别低效,轻松玩转开发测试! 亮点一:多数据库支持,数据查询从未如此简单 在接口开发、测试过程中,经常会和数据库打交道,甚至会同时用到不同类型的数据库,包括:SQL、noSQL 等等。下面给出在 atest 中如何使用数据库工具的介绍: 首先,添加数据库链接。经过测试,支持的数据库包括:MySQL、Postgres、TiD...

0
0
发表了资讯
2024/06/14 12:58

API Testing v0.0.17 发布,新增 11 位 contributor

atest 发布 v0.0.17 atest 是致力于帮助开发者持续保持高质量 API 的开源接口工具。 你可以在命令行终端或者容器中启动: docker run -p 8080:8080 ghcr.io/linuxsuren/api-testing:v0.0.17 亮点 我们提供了基于 Electron 的桌面应用,会极大地方便开发者在桌面环境中测试 API。 为缩减镜像的体积(40M),我们把插件全部以 OCI 的格式单独存储,并在启用时自动下载。 诞生了第二位项目 Committer @yuluo-yx 非常期待 atest 可以...

0
1
发表了资讯
2023/12/11 10:15

API Testing v0.0.15 为 29.6 K 的知名开源建站工具 Halo 提供 E2E

atest 发布 v0.0.15 atest 是致力于帮助开发者持续保持高质量 API 的开源接口工具。 你可以在命令行终端或者容器中启动: docker run -p 8080:8080 linuxsuren/api-testing:v0.0.15 亮点 在本次版本发布之前,成功地为以下开源项目实现了 API 的 E2E 测试: halo-dev/halo,一款 Java 实现的开源建站工具 dromara/hertzbeat,一款监控系统 非常期待 atest 可以帮助更多的项目持续提升、保持 API 稳定性。 主要的新功能 支持...

0
0
发表了资讯
2023/10/31 14:45

API Testing v0.0.14 新增 tRPC、gRPC 协议的支持

api-testing atest 版本发布 v0.0.14 atest 是一款用 Golang 编写的、开源的接口测试工具。 你可以在容器中启动: docker run --network host \ linuxsuren/api-testing:master 或者,直接下载二进制文件后启动: atest server --local-storage /var/www/sample 主要的新功能 增加了对 tRPC 和 gRPC 协议的(命令行与 Web 界面)支持 新增了 Helm Chart 的安装方式 支持通过按钮切换暗模式 支持启动启动插件 支持在 ...

0
1
发表了资讯
2023/08/22 09:07

API Testing 发布 v0.0.13 包含大量实用的功能

atest 版本发布 v0.0.13 atest 是一款用 Golang 编写的、开源的接口测试工具。 你可以在容器中启动: docker run -v /var/www/sample:/var/www/sample \ --network host \ linuxsuren/api-testing:master 或者,直接下载二进制文件后启动: atest server --local-storage /var/www/sample 对于持续集成(CI)场景,可以通过在流水线中执行命令的方式: # 执行本地文件 atest run -p your-test-suite.yaml # ...

0
3
发表了资讯
2023/06/18 18:28

开源接口测试工具 atest 发布 v0.0.12

atest 版本发布 v0.0.12 atest 是一款用 Golang 编写的、基于 YAML 格式的开源接口测试工具,可以方便地在本地、服务端、持续集成等场景中使用。 我们希望提供一个简单、强大、高质量的测试工具,方便测试、研发人员快速、低成本地借助接口测试为产品研发质量保驾护航。 通过以下命令启动 HTTP 代理服务器后,给您的浏览器配置该代理,打开业务系统就会自动录制: docker run -p 1234:8080 -v /var/tmp:/var/tmp \ ghcr.i...

0
2
发表了资讯
2023/04/24 12:30

API Testing v0.0.11 发布了,增强了对 Kubernetes 的支持

API Testing 是一款用 Go 编写的,采用 MIT 开源协议的接口测试工具,包括常规测试以及性能测试。同时,也提供了 VS Code 插件以方便使用。 本次版本 v0.0.11 主要更新的点包括: 动态生成符合 Kubernetes 自定义资源名称的随机字符串 支持校验任意 Kubernetes 自定义资源 执行测试用例前,先对 YAML 格式进行校验,并在有错误时给出提示 根据 SonarQube 给出的代码扫描结果对代码做了响应的优化 提供更多的使用样例 下面是完整...

0
2
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
0 评论
7 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部