HTTP/gRPC模拟工具Camouflage

2024年 4月 22日 61.4k 0

1.前言

测试人员一般在什么场景下会使用mock?

总结有以下4种场景:

模拟外部依赖:当软件系统与外部服务、数据库或第三方 API 交互时,测试人员可以使用 mock 来模拟这些外部依赖,以避免依赖性问题影响测试结果。

未实现的功能:如果某些功能尚未实现,但其他功能需要进行测试,测试人员可以使用 mock 来代替这些未实现的部分。

隔离测试单元:在单元测试中,有时需要隔离待测试的单元与其余代码逻辑,此时可以使用 mock 对其他部分进行模拟,保证测试的准确性和独立性。

提高测试效率:使用 mock 可以帮助测试人员更快地编写和运行测试用例,因为它们可以减少对外部资源的依赖,加快测试执行速度。

总的来说,mock 的使用可以帮助测试人员更好地控制测试环境,提高测试效率,同时降低测试的成本和复杂度。

本文将介绍一款可模拟HTTP/HTTPS等协议的mock工具 - Camouflage

2.简介

Camouflage 是一个用于 HTTP、gRPC、Websockets 和 Thrift 协议的后端模拟工具,它可以帮助你在缺少一个或多个微服务/API的情况下,独立进行前端原型设计、单元测试、功能测试和性能测试等。

Camouflage 基于文件的端点配置进行工作,这意味着你可以通过简单地创建一组目录和一个模拟文件来创建一个模拟端点,当调用该端点时,使用这些文件生成所需的响应。

功能特性:

  • 基于文件的模拟,支持HTTP、HTTPS、HTTP2、gRPC、Thrift和websockets
  • 无需编写任何代码的动态/真实响应
  • 灵活地对你的回答进行部分或全部编码
  • 基于请求参数的条件响应
  • 内置缓存-内存和redis
  • 能够使用外部数据获取和调节响应,当前支持的数据源是CSV和postgres
  • 延迟模拟
  • 内置监控
  • 内置备份和恢复机制
  • 快速启动 camouflage init 和 camouflage restore 模块
  • 可在独立VMs、Docker和Kubernetes上部署
  • 附带文件资源管理器UI,允许修改远程托管的模拟文件
  • 使用OpenApi架构验证请求和响应

官方网址:

https://testinggospels.github.io/camouflage/

3.安装

Camouflage是一个NPM包,安装之前,先确保是否已安装NodeJS(>v14),如没有,则先安装NodeJS。

安装Camouflage。

npm install -g camouflage-server

安装完成后,输入camouflage –version,显示版本号以验证安装是否成功。

4.快速上手

初始化Camouflage项目。

在系统中的任何位置创建一个空目录,并在终端/命令行中导航到该目录下。

例如创建 testDemo 目录,路径为C:testDemo

对于npm和yarn,执行命令 camouflage init

或使用 npx degit camouflagejs/init myproject 来初始化Camouflage项目。

初始化完成后的目录结构:

通过使用config.yml文件初始化Camouflage服务器来启动它。

输入命令:

camouflage --config config.yml

打开浏览器访问http://localhost:8080/

如同所示,Camouflage服务起来了。

创建第一个mock。

config.yml文件里,已经定义了mock目录所在项目的路径。

在mocks目录里创建demo目录。

创建GET.mock文件。

文件内容:

HTTP/1.1 200 OK
X-Custom-Header: Custom-Value
Content-Type: application/json

{
    "username": "admin",
    "password": "123456"
}

浏览器访问mock地址:

http://localhost:8080/demo

如图所示,mock访问成功。

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论