Bats 测试模式
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/bats-testing-patterns。
技能介绍
问题从哪来
Shell 脚本一旦进入 CI 或多人协作,退出码、标准输出/错误和副作用(改文件、调外部命令)往往只能靠手工跑一遍。回归成本高,边界条件和失败路径也容易被漏测。Bats(Bash Automated Testing System)把「可重复的断言」带进 bash 世界,但如何组织用例、夹具和 CI 仍需要一套可复制的模式。
技能在讲什么
本技能是一份面向 Bats 的单元测试实践指南,重点包括:
- 确认 shell 方言与目标运行环境,避免「本地能过、流水线挂」
- 用辅助函数与测试夹具(fixtures)搭结构,而不是把逻辑堆在单个
@test里 - 针对 exit code、stdout/stderr 与副作用编写断言
- 使用 setup / teardown 隔离状态,并在 CI/CD 中稳定执行
更细的模式与示例在 resources/implementation-playbook.md 中展开。
适用边界
适合为 shell 脚本做 TDD 或流水线自动化测试。若项目几乎不用 shell、需要的是跨服务/跨进程的集成测试,或目标只是 lint/格式化,应选用其它工具链,而不是把 Bats 当万能测试框架。
使用场景
- 维护部署/运维脚本,需要在合并前用 Bats 断言退出码与关键输出
- 在 CI 流水线里为 `*.sh` 增加回归测试,覆盖正常路径与失败分支
- 对安装或初始化脚本做 TDD,先写 `@test` 再改实现
- 换镜像或默认 shell 后,用同一套用例验证脚本在不同环境下的行为
适合人员
- 负责发布脚本的 DevOps/SRE,希望把 shell 变更纳入可重复的流水线测试
- 维护内部 CLI 或 bash 工具库的工程师,需要夹具与 setup/teardown 规范用例结构
- 在开源或团队仓库中引入 Bats 的维护者,要对照 playbook 落地测试模式与边界断言
- 写 shell 包装第三方命令的集成开发者,需专门测 stderr、非零退出与副作用