SuperAPI AI 工具集

bats-testing

测试与质量

查看项目

更新于 10-16 02:32

技能介绍

用途:当正确性依赖真实 shell 行为(退出码、stdout/stderr、被 source 的函数、外部命令)时,用 Bats 在 shell 边界测试行为而非实现细节。适用场景包括 CLI 工具端到端测试、测试被 source 的 Bash 库、以及用 curl + jq 把 Bats 当作 shell 原生 REST API 测试运行器。

主要能力与用法:推荐目录结构为 test/helpers/test_helper.bash 与 cli_.bats、lib_.bats、api_*.bats。helper 中通过 load 'test_helper/bats-support/load' 和 load 'test_helper/bats-assert/load' 引入断言,并用 mktemp -d 建立隔离临时目录。CLI 测试用 run 执行命令,同时断言退出状态与输出,并隔离 HOME 等运行时目录,每个命令面至少包含一个负路径测试。测试被 source 的库时需区分进程级断言(run bash -c 'source ...')与 shell 内状态断言(直接调用,不用 run),因为 run 在子 shell 中执行,变量副作用不会保留。REST API 测试可封装 request_json 辅助函数,用 curl 的 -w '%{http_code}' 取状态码、-o 保存响应体,再用 jq -e 断言 JSON,并生成唯一测试数据、必要时显式清理。

限制与常见错误:仅用 grep 解析 JSON 较脆弱,应使用 jq -e;只测正常路径不够;对有状态函数使用 run 会丢失副作用;未隔离本机状态(HOME、配置目录)会导致不可复现。资料未提供安装命令、版本要求或收费信息。