atest v0.0.18 提供了强大、灵活的 HTTP API Mock 功能

atest 发布 v0.0.18

atest 是致力于帮助开发者持续保持高质量 API 的开源接口工具。

a78ca337427ba0ff3bb40b3683253596.png

你可以在命令行终端或者容器中启动:

docker run -p 8080:8080 ghcr.io/linuxsuren/api-testing:v0.0.18

亮点

  • 在开源之夏 2024 中 atest 增加了基于 MySQL 的测试用例历史的支持

  • HTTP API Mock 功能的支持

在系统和平台的开发过程中,我们通常会采用前后端分离的开发模式。在后端 API 尚未开发完成、稳定化,并且未部署到公共集成测试环境之前,前端开发者往往需要通过硬编码数据来推进页面开发。待后端开发完成后,会进入所谓的 “联调” 阶段,这时可能会遇到以下问题:

  • 前端可能需要调整数据结构、页面布局和逻辑,并重新进行测试

  • 在实际查看页面后,可能会发现后端的数据结构和 API 的请求与响应需要调整

在最坏的情况下,前后端的联调可能会耗费远超预期的时间。为了更有效地解决这一问题,atest 提供了 HTTP API Mock 功能。

在设计评审阶段,我们可以根据 API 设计提供相应的 Mock 服务配置,从而快速模拟后端 API 的响应数据。例如:

objects:- name: userssample: |{"name": "LinuxSuRen","age": 18"gender": "male"}
proxies:- path: /api/v1/projects/{projectID}target: http://localhost:8080

把上面的内容放到 mock.yaml 文件中,然后使用 atest mock --prefix /api/v1 --port 6060 mock.yaml 命令即可启动一个 HTTP Mock 服务。

此时,Mock 服务就会把代理模块指定的 API 转发到已有服务的的接口上,并同时提供了 users 对象的增删查改(CRUD)的标准 API。你可以用 atest 或者 curl 命令来调用这些 API。

curl -X POST -d '{"name": "Rick"}' http://localhost:6060/api/v1/users
curl -X GET http://localhost:6060/api/v1/users
curl -X PUT -d '{"name": "Rick", "age": 20}' http://localhost:6060/api/v1/users/Rick
curl -X GET http://localhost:6060/api/v1/users/Rick
curl -X DELETE http://localhost:6060/api/v1/users/Rick

非常期待 atest 可以帮助更多的项目持续提升、保持 API 稳定性。

🚀 主要的新功能

  • Mock 功能的增强,包含对象、原始、代理三种模式 (#552) @LinuxSuRen

  • 支持重命名测试用例、测试集 (#550) @LinuxSuRen

  • 支持给定频率下重复执行测试用例 (#548) @LinuxSuRen

  • 下载插件文件时显示进度信息 (#544) @LinuxSuRen

  • 支持生成随机图片并上传 (#541) @LinuxSuRen

  • 支持上传嵌入式文件(基于 base64 编码) (#538) @LinuxSuRen

  • 支持导入其他 atest 实例的用例数据 (#539) @LinuxSuRen

  • UI 上显示响应体的大小 (#536) @LinuxSuRen

  • 增加基于 MySQL 位存储的测试用例执行历史记录 (#524) @SamYSF

  • 支持设置插件下载的 “前缀” 信息 (#532) @SamYSF

  • 优化存储插件管理界面 (#518) @LinuxSuRen

  • 在 UI 上增加快捷键支持 (#510) @LinuxSuRen

  • 重构 API 风格为 restFul (#497) @LinuxSuRen

  • 增加 Mock 配置的 JSON schema (#499) @LinuxSuRen

  • 增加了对 JSON 兼容性的响应格式的支持 (#496) @LinuxSuRen

🐛 缺陷修复

  • 修复测试用例重复时被覆盖的问题 (#531) @LinuxSuRen

致谢

本次版本发布,包含了以下 3 位 contributor 的努力:

  • @LinuxSuRen

  • @SamYSF

  • @yuluo-yx

相关数据

下面是 atest 截止到 v0.0.18 的部分数据:

  • watch 9

  • fork 50

  • star 249 (+40)

  • contributor 25 (+1)

  • 二进制文件下载量 6.3k (+3.2k)

  • 部分镜像 6.4k (+0.9k)

  • 单元测试覆盖率 76% (+2%)

想了解完整信息的话,请访问 https://github.com/LinuxSuRen/api-testing/releases/tag/v0.0.18

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

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

相关文章

ele-table表格列表内,双击编辑部分信息(el-table组件同理)

说明 ele-table 为公司内部组件,重点看 【主要代码】 部分代码 ele-table表格列表内:双击需要编辑的区域,编辑部分信息 实现 双击需要编辑的数据,展示输入框/日期选择, 展示输入框:修改完之后,按…

开源的GPT-4o模型使用指南,Mini-Omni2集视觉、语音和双工能力于一体的

1. Mini-Omni2 是什么? Mini-Omni2 是一个开源的多模态语言模型,旨在模拟 GPT-4o 的视觉、语音和文本处理能力。它能够理解和生成视觉、听觉和文本内容,并支持实时的语音输出和灵活的双工交互。 Mini-Omni2 由清华大学和 Inspirai 的研究人…

Serverless + AI 让应用开发更简单

本文整理自 2024 云栖大会,阿里云智能高级技术专家,史明伟演讲议题《Serverless AI 让应用开发更简单》 随着云计算和人工智能(AI)技术的飞速发展,企业对于高效、灵活且成本效益高的解决方案的需求日益增长。本文旨在…

正式开源:从 Greenplum 到 Cloudberry 迁移工具 cbcopy 发布

Cloudberry Database 作为 Greenplum 衍生版本和首选开源替代,由 Greenplum 原始团队成员创建,与 Greenplum 保持原生兼容,并能实现无缝迁移,且具备更新的 PostgreSQL 内核和更丰富的功能。GitHub: https://github.com/cloudberry…

基于人工智能的搜索和推荐系统

互联网上的搜索历史分析和用户活动是个性化推荐的基础,这些推荐已成为电子商务行业和在线业务的强大营销工具。随着人工智能的使用,在线搜索也在改进,因为它会根据用户的视觉偏好提出建议,而不是根据每个客户的需求和偏好量身定制…

SpringBoot starter机制

1、出现的背景 在spring boot之前,想要在spring中集成redis,需要做的事情包括: (1)引入jar包:包括redis的jar包,redis依赖的jar包,相应的版本,与spring版本是否兼容等 …

在 JavaScript 中,`Array.prototype.filter` 方法用于创建一个新数组,该数组包含通过测试的所有元素

文章目录 1、概念在你的代码中的作用示例总结 2、实战3、formattedProducts4、filteredProducts 1、概念 在 JavaScript 中,Array.prototype.filter 方法用于创建一个新数组,该数组包含通过测试的所有元素。具体来说,filter 方法会遍历数组中…

通过源码分析类加载器里面可以加载的类

类列表 每一个ClassLoader里面的类列表,类的数量都是固定的。 对上一节中的dex反编译 使用DexClassLoader类动态加载插件dex   利用jadx对dex进行反编译可以看到有哪些类 源码分析 BaseDexClassLoader 从BaseDexClassLoader类加载器开始分析 在BaseDexClassLoade…

系统架构设计师(软考高级)一站式通关课程

系统架构设计师(软考高级) 一站式通关课程 系统架构设计师(软考高级)教程(三连评论分享链接!) 🎯 课程亮点: 全面覆盖: 从基础概念到高级应用,涵盖…

C++ 优先算法——盛最多水的容器(双指针)

目录 题目:盛最多水的容器 1. 题目解析 2. 算法原理 3. 代码实现 题目:盛最多水的容器 1. 题目解析 题目截图: 如图所示: 水的高度一定是由较低的那条线的高度决定的:例1图中,是由7决定的,然后求出…

SQL-lab靶场less1-4

说明:部分内容来源于网络,如有侵权联系删除 前情提要:搭建sql-lab本地靶场的时候发现一些致命的报错: 这个程序只能在php 5.x上运行,在php 7及更高版本上,函数“mysql_query”和一些相关函数被删除&#xf…

Golang | Leetcode Golang题解之第535题TinyURL的加密与解密

题目: 题解: import "math/rand"type Codec map[int]stringfunc Constructor() Codec {return Codec{} }func (c Codec) encode(longUrl string) string {for {key : rand.Int()if c[key] "" {c[key] longUrlreturn "http:/…

使用 Elasticsearch 进行语义搜索

Elasticsearch 是一款功能强大的开源搜索引擎,可用于全文搜索、分析和数据可视化。传统上,Elasticsearch 以其执行基于关键字/词汇的搜索的能力而闻名,其中文档基于精确或部分关键字匹配进行匹配。然而,Elasticsearch 已经发展到支…

计算机毕业设计Python+大模型新闻自动分类 新闻舆情预测 新闻语料情感分析 新闻推荐系统 朴素贝叶斯分类算法 机器学习 深度学习

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

【097】基于SpringBoot+Vue实现的个人社区博客管理系统

系统介绍 演示视频 小白博客2.0(SpringbootVue)源码数据库讲解视频设计文档 基于SpringBootVue实现的小白博客2.0系统设计了超级管理员、系统观察者、用户三种角色,超级管理员可对用户授权,具体实现的功能如下 文章采用了比较火的Markdown编…

LM Head weights;ChatGPT-3词汇量:175,000;llama7b 词汇量,词嵌入维度:4096

目录 LM Head weights ChatGPT-3词汇量:175,000 llama7b 词汇量 词汇量:32000 max_position_embeddings: 4096 LM Head weights ChatGPT-3词汇量:175,000 ChatGPT-4 确切的词向量种类数量公开信息。但可以根据一些语言模型的相关知识进行推测分析。 一般来说,语言模…

ArcGIS005:ArcMap常用操作101-150例动图演示

摘要:本文涵盖了GIS软件操作的多方面内容,包括地图文档的新建、打开、保存及版本兼容性处理;错误与警告的查阅及帮助文档的使用技巧;地图打印比例尺的调整与地图信息的完善;图层操作的撤销与恢复,界面元素的…

Chrome和夸克谁更护眼

在当今数字化时代,我们每天长时间面对电脑和手机屏幕,眼睛的健康问题变得越来越重要。浏览器作为我们日常使用频率极高的工具,其护眼功能的优劣直接影响到我们的视觉舒适度。本文将对Chrome和夸克两款主流浏览器进行对比,探讨它们…

WPF+MVVM案例实战(十二)- 3D数字翻牌计时实现

文章目录 1、运行效果2、功能实现1、文件创建2、控件代码实现3、控件引用与菜单实现1.引用用户控件2.按钮菜单3、计时器界面实现4、源代码获取1、运行效果 3D数字翻牌计时 2、功能实现 1、文件创建 打开项目 Wpf_Examples ,在用户控件 UserControlLib 中创建 NumberFoldi…

一、计算机网络概述,《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》

文章目录 [toc]零、前言一、什么是Internet1.1 从具体构成角度1.2 什么是协议1.3 从服务角度1.4 网络结构 二、网络边缘2.1 通讯模式2.2 采用网络设施的面向连接服务2.3 采用基础设施的无连接服务 三、网络核心3.1 认识网络核心3.2 网络核心:电路交换3.2.1 基本原理…