API Testing 一个基于 YAML 文件的开源接口测试工具

news2024/12/23 19:32:40

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 以及控制台输出。效果如下所示:

APIAverageMaxMinCountError
GET https://gitlab.com/api/v4/projects1.152777167s2.108680194s814.928496ms990
GET https://gitlab.com/api/v4/projects/45088772840.761064ms1.487285371s492.583066ms100

consume: 1m2.153686448s

服务端模式

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

atest server

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

atest service (install | start | stop | restart)

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

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

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

5969f7aeeefc302d163b14952c14b096.png

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

  • 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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/443125.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

传智教育“大同互联网职业技术学院”奠基仪式盛大举行,开拓高等职业教育发展新版图

2023年4月20日,大同市“数字经济职业教育发展论坛暨大同互联网职业技术学院奠基仪式”在大同隆重举行。论坛由中共大同市委、大同市人民政府主办,大同市教育局、传智教育承办,并全程在多平台进行线上直播。 大同市委副书记、市长张强&#x…

学生成绩管理系统winform+SqlServer

主要技术: 基于C#winform架构和sql server数据库 功能模块: 学生选课, 可以查询个学期各科成绩 查看或者选择选课信息 显示当前课表,管理员后台管理 开设课程 课程查询(上课时间和地点) 录入该课程下的…

【Java】jieba结巴分词器自定义分词词典 超详细完整版

发现一款很轻量好用的分词器->结巴分词器 分享给大家 不仅可以对常规语句分词,还可以自定义分词内容,很强大!! 源码地址👉:https://github.com/huaban/jieba-analysis 简单使用 如果是常规的语句&#…

transformer与vit

transformer结构,位置编码复现 https://wandb.ai/authors/One-Shot-3D-Photography/reports/-Transformer—Vmlldzo0MDIwMjc 训练部分 https://nlp.seas.harvard.edu/2018/04/03/attention.html#training transform训练代码从0构建 https://blog.csdn.net/BXD1…

全注解下的SpringIoc 续1

上篇文章介绍了ioc的基本用法和ComponentScan注解的使用,这篇文章我们来看看依赖注入的部分。 提起依赖注入,想必大家肯定会想到Autowired注解,的确,它是我们用的最多的一个。 还记得容器的顶级接口BeanFactory 吗,它定…

微信开发者工具使用git提交项目至gitee远程仓库(保姆级)

1. 开始 1.1. 点击进入gitee官网 进入主页之后,根据图片右上角点击新建仓库 输入自定义仓库名称, 访问路径点击创建仓库 这里不要点击初始化文件, 复制Git远程仓库路径 打开微信开发者工具,新建项目什么的就不多说了,打开项目,根据图片所示, 点击版本管理弹出窗口, 点击远程…

代码生涯冲常见的的bug.例如layui表格中日期自动生成、eacharts 报表的重复点击事件

1、layui表格中日期不受控制的自动生成&#xff0c;这种情况往往是你设置了日期类型的强转 例 对于这种情况你需要定义templet模板 1、 {field: outtime, title: 离开时间,templet : "#time"} 2、 <script type"text/html" id"time"> …

通过Salesforce考试 (考证) 后,如何在Trailhead上验证和维护证书?

随着Salesforce产品家族的不断壮大&#xff0c;学习者可以考的认证也在不断增多。从十几年前的几个认证&#xff0c;增长到现在的40多个认证。 在获得Salesforce认证之后&#xff0c;除了要将其放在LinkedIn和Trailblazer.me个人资料中&#xff0c;还有一种官方途径可以让其他…

野火STM32电机系列(五)Cubemx配置高级定时器TIM1

鸽了一段时间&#xff0c;放心不会断的哈&#xff0c;目前仅仅是显示屏坏了&#xff0c;不影响后面项目 前文已经配置了GPIO、编码器 本节讲解CubeMX高级定时器TIM1配置带死区的6路互补的PWM 同时配置信号触发后续ADC采集 板子引角的原理图如下 对应的&#xff1a; Motor1…

一文告诉你什么是无代码?无代码开发有什么好处

全球知名IT研究机构曾预测&#xff1a;到2025年&#xff0c;企业机构开发的新应用中&#xff0c;有70&#xff05;将会使用无代码技术&#xff0c;并会使用至少四种低代码或无代码开发工具。甚至有人预言&#xff1a;“代码—低代码—无代码”&#xff0c;将是编程历史上的一种…

2022年中国广义数据智能市场规模为442亿元

数据智能是当前市场上的热点应用。但业界对于数据智能的发展状况&#xff0c;缺乏深入探讨与研究。为了系统梳理中国数据智能行业市场全景&#xff0c;厘清行业发展脉络&#xff0c;为从业者提供有价值的借鉴&#xff0c;海比研究院联合中国软件网、中国软件行业协会应用软件产…

Zabbix“专家坐诊”第188期问答汇总

问题一 Q&#xff1a;zabbix能监控waf日志针对告警么&#xff1f; A&#xff1a;可以通过snmp trap的方式。 Q&#xff1a;snmp trap在zabbix端怎么配置呢&#xff1f;我配置的不生效&#xff0c;zabbix服务器端。 A&#xff1a;trap要先在设备开启&#xff0c;设备有告警会…

绒毛/短毛渲染

文章目录 多层毛发模型123 代码实现cgincshader refer&#xff1a; 腾讯游戏学堂 主要来自这里&#xff0c;感谢讲解&#xff01; 首先说一点&#xff0c;很多文章都把毛发和头发弄混&#xff0c;根本就不是一回事好吧&#xff0c;为了区分&#xff0c;我的两篇文章分别用了长…

数值分析(四) Hermite(埃尔米特)插值法及matlab代码

目录 前言一、Hermite插值1. Hermite定理2. 重节点差商3. 重节点Newton插值4. Hermite 插值公式4.1 三点三次 Hermite插值4.2 两点三次 Hermite插值4.3 2 n 1 2n1 2n1次Hermite插值多项式 二、Hermite插值算法及matlab代码1. 2 n 1 2n1 2n1次Hermite插值matlab代码实现2. 例…

2.1寸黑白TFT电子标签【基站版】

ESL_TFT_2.1_V4 产品参数 产品型号 ESL_TFT_2.1_V4 尺寸(mm) 69.5*35*14.8mm 显示技术 TFT 反射式 显示区域(mm) 23.71(H) * 48.55(V) 分辨率(像素) 250*122 像素尺寸(mm) 0.194*0.194 显示颜色 黑/白 视觉角度 45/45/60/60 工作温度 -20-70℃ 产品重量 …

Mysql第一章 字符集

字符集修改 一 在mysql5.7中输入汉字报错二 修改针对修改后创建的数据库&#xff0c;过去创建的数据库不算三 想要单独修改四 基本的mysql命令五 各级别的字符集 一 在mysql5.7中输入汉字报错 # 在5,7中&#xff0c;默认字符集为latin1,开发人员在数据库设计时&#xff0c;需要…

Python用curve_fit进行多元拟合

文章目录 入门参数多元拟合 入门 scipy.optimize中&#xff0c;curve_fit函数可调用非线性最小二乘法进行函数拟合&#xff0c;例如&#xff0c;现在有一个高斯函数想要被拟合 y a exp ⁡ − ( x − b c ) 2 y a\exp-(\frac{x-b}{c})^2 yaexp−(cx−b​)2 则调用方法如下 …

Zookeeper源码分析——Follower和Leader状态同步源码

Follower和Leader状态同步源码 当选举结束后&#xff0c;每个节点都需要根据自己的角色更新自己的状态。选举出的Leader更新自己状态为 Leader&#xff0c;其他节点更新自己状态为 Follower Leader更新状态入口&#xff1a; leader.lead() Follower更新状态入口&#xff1a; f…

VUE3 学习笔记(九)使用富文本编辑器tinymce最新版

目录 1、安装相关依赖 2、下载中文包 3. 引入皮肤和汉化包 4. 封装组件:在src/components下新建TEditor.vue&#xff0c;并写入以下代码 5. 注册及使用组件 6. Tinymce 版本&#xff08;截至2023-04-18&#xff09; 1、安装相关依赖 npm install tinymce -S npm install ti…

python+vue小型公司人事企业员工培训报名管理系统

该系统主要实现了公告信息管理、个人考勤管理、培训信息管理、员工管理、员工工资管理等主要模块功能。具体功能如下所示&#xff1a; 1. 公告信息管理&#xff1a;查看公告标题、公告类型、公告图片、发布日期等一系列信息。 2. 个人考勤管理&#xff1a;查看考勤名称、员工工…