news 2026/9/14 2:18:16

Keploy record 的 mock 存储格式 yaml 和 gob 怎么选?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Keploy record 的 mock 存储格式 yaml 和 gob 怎么选?

Keploy record 的 mock 存储格式 yaml 和 gob 怎么选?

【免费下载链接】keployOpen-source platform for creating safe, isolated production sandboxes for API, integration, and E2E testing.项目地址: https://gitcode.com/GitHub_Trending/ke/keploy

keploy record录制应用流量时,Keploy 会把捕获到的依赖响应存成 mock 文件,供后续keploy test重放。落盘格式有两种:yaml(默认,写成mocks.yaml)和gob(写成mocks.gob)。选择依据是KEPLOY_MOCK_FORMAT环境变量(取值yamlgob)或keploy.yml里的record.mockFormat配置项,两者同时存在时环境变量优先。

选型的决策依据来自 docs/env-vars.md 中对这两种格式的说明,以及keploy record的标准用法(见 README)。

两种格式的差异

配置值落盘文件特性
未设置 /yamlmocks.yaml默认。人类可读;兼容所有现有 keploy 工具链、CI diff 和 PR review 工作流
gobmocks.gob二进制。高吞吐场景下 record client 约省 28% CPU;不便于 grep/diff;没有跨 Go 版本的稳定性契约——pkg/models/*中依赖gob.Register的 struct 变更可能破坏对旧mocks.gob的重放。文件带魔法头版本标记(keploy-gob-v1),破坏性变更会 bump 后缀,旧文件在读取时快速失败

两点值得注意:

  • "约 28% CPU 节省"只在高吞吐录制场景下成立,是文档给出的量化依据;
  • gob 没有跨版本稳定性契约,意味着今天录的mocks.gob在未来某个 keploy/Go 结构变更后可能无法重放,而mocks.yaml没有这个问题。

怎么选

  • 默认选yaml(即什么都不配置)。只要 mock 文件需要被团队成员直接阅读、在 CI 中做 diff、或作为 PR review 的一部分,yaml 是文档明确兼容的工作流。
  • gob当且仅当录制端 CPU 是瓶颈、流量吞吐高,并且你的团队接受 mock 文件不可读、不可 diff,接受旧mocks.gob可能在新版本下无法重放。

如果你只是想临时对比 gob 的效果,用环境变量做一次 ad-hoc 运行即可,不需要改配置文件。

配置方法

临时切换:环境变量(ad-hoc 实验)

KEPLOY_MOCK_FORMAT=gob keploy record -c "./my-app"

其中./my-app替换为你实际的应用启动命令,与 README 中keploy record -c "CMD_TO_RUN_APP"的用法一致。

适用条件与限制:KEPLOY_MOCK_FORMAT进程全局的——在 shell 里 export 之后,该 shell 启动的每一次 keploy 调用都会带上它。文档明确说明正是因此才提供了配置文件字段:配置项只作用于具体的某次运行,并且在 code review 时可见。所以环境变量适合一次性实验,不适合作为团队默认。

团队固定默认:keploy.yml

record: mockFormat: gob

该字段对应源码 config/config.go 中的MockFormat"""yaml"为默认,"gob"写二进制mocks.gob)。环境变量设置后优先于该字段。

结果验证

  1. 运行keploy record结束后,检查 test-set 目录下的落盘文件:yaml 格式生成mocks.yaml,gob 格式生成mocks.gob,文件名即扩展名就是格式的直接证据。
  2. 重放侧无需额外配置:读取路径按文件扩展名自动探测;同一 test-set 目录里两种文件都存在时,mocks.gob优先被使用。
  3. 如果想确认 mock 内容(yaml 路径),可以打开mocks.yaml查看每个 mock 的spec.metadata.type,格式参见 docs/explanation/mock-lifetimes.md 中"Inspecting a recording"一节给出的文档示例。

限制与边界

  • gob 的 CPU 收益(约 28%)是高吞吐录制下的数字,不要在低流量场景预期同样收益。
  • gob 文件不可 grep/diff,PR review 中无法直接比对 mock 变化。
  • gob 无跨 Go 版本稳定性契约;破坏性变更通过keploy-gob-v1魔法头后缀 bump 来隔离,旧文件读取时快速失败而不是静默出错。
  • 环境变量在 shell 中 export 会泄漏到该 shell 之后启动的所有 keploy 调用(包括标准模式录制),长期生效请走record.mockFormat

如果你的场景是"默认 CI 友好 + 偶尔做高吞吐录制的 CPU 对比实验",推荐组合是:keploy.yml不设置mockFormat(保持 yaml),需要实验时用KEPLOY_MOCK_FORMAT=gob keploy record -c "..."单次覆盖。

【免费下载链接】keployOpen-source platform for creating safe, isolated production sandboxes for API, integration, and E2E testing.项目地址: https://gitcode.com/GitHub_Trending/ke/keploy

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/14 2:18:02

研究方法与开题报告并行推进:几处得先对齐,两边才不互相改

正在写开题报告和方法章的本科生、研究生,两份文件挤在一段时间里,卡住人的不是时间不够,而是彼此之间有几处得先对好——对好了各写各的,对不上就相互牵动。核心方案是知学术AIPaperGPT:先用免费智能大纲搭出章节骨架…

作者头像 李华
网站建设 2026/9/14 2:17:39

超声无损检测与COMSOL建模核心技术解析

1. 超声无损检测的技术背景与应用价值超声无损检测(Ultrasonic Non-Destructive Testing, UNDT)作为工业领域质量控制的"听诊器",其核心原理是利用高频声波与材料内部结构的相互作用。当超声波在金属、复合材料等介质中传播时&…

作者头像 李华
网站建设 2026/9/14 2:17:03

SpringBoot+Vue+uniapp开发急救常识学习小程序全流程实践

简介:基于小程序与SpringBootVue的急救常识学习系统,是一套面向毕业设计、课程设计或前后端分离初学者的完整工程。项目以SpringBoot提供后端接口,Vue与uniapp构建管理端及小程序端,MySQL存储急救知识数据,整体采用前后…

作者头像 李华
网站建设 2026/9/14 2:15:44

同样是论文AI工具,开题通用款和定稿双降款差距到底在哪?

2026 年写论文,真正的问题已经不是“能不能用 AI”,而是“该在哪一步用哪款 AI”。 很多同学一边开着 ChatGPT,一边传 Kimi,又拿着查重报告去找降重工具,最后发现:提纲是清楚了,文字也顺了&…

作者头像 李华
网站建设 2026/9/14 2:14:57

Django+MySQL+Redis构建网上商城:订单状态机与支付宝集成实践

简介:这是一份基于DjangoMySQLRedis的Python网上商城完整源代码,面向具备一定Python基础、希望学习电商系统前后端开发或毕业设计参考的开发者。资源实现了从用户注册登录、商品展示与详情、关键词搜索,到按尺寸颜色数量加入购物车、购物车与…

作者头像 李华
网站建设 2026/9/14 2:14:43

AI教材生成技术:低查重方案与实现路径

1. AI教材生成技术概述在当今教育信息化快速发展的背景下,AI教材生成技术正逐渐改变传统教材编写模式。这项技术通过自然语言处理(NLP)和机器学习算法,能够自动生成结构完整、内容专业的教学材料。与人工编写相比,AI生成教材具有效率高、成本…

作者头像 李华