关于 test-component
为 Keboola Python 组件提供测试方法与配置指导,面向组件开发者。涵盖数据目录测试、单元测试及外部 HTTP API 的 VCR 功能测试,并提供搭建与排错参考。
主要功能
- 01数据目录功能测试
- 02单元测试与模拟
- 03VCR 录制和回放
- 04测试配置与脚手架指导
- 05测试故障排查参考
适用场景
- 01为组件验证输入、输出和状态
- 02测试调用外部 API 的提取器
- 03为纯逻辑编写隔离测试
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ keboola/ ai-kit --skill test-component安装后在 Claude Code 中输入/test-component确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/datadir-tests.mdunit-and-mock-tests.mdvcr-configs-format.mdvcr-debug-from-platform.mdvcr-quickstart.mdvcr-sanitizers.mdvcr-troubleshooting.md详细介绍
Keboola 组件测试器
测试方法
按优先级分为三个层级:
- Datadir 测试 — 使用 KBC_DATADIR 结构进行功能测试;这是所有组件的主要测试方法
- 单元测试 — 针对转换、验证和配置解析的隔离逻辑测试
- VCR 功能测试 — 适用于调用外部 HTTP API 的组件(相比手动模拟,更推荐用于提取器/写入器)
选择 VCR 还是模拟
组件会进行外部 HTTP 调用时,使用 VCR(keboola.datadirtest):
- 记录一次真实的 API 交互 → 在 CI 中无凭据地确定性重放
- 比手动编写的模拟更真实;能捕获 API 契约变更
- 提取器必须使用;对于调用外部 API 的写入器,建议使用
以下情况使用模拟(unittest.mock):
- 测试纯逻辑、转换或验证代码
- 为单个函数编写单元测试
- 组件不进行 HTTP 调用(应用程序、纯转换)
VCR 设置工作流
- 将
keboola.datadirtest>=2.0.0添加到pyproject.toml的开发依赖项中,然后运行uv sync -U - 从
component-developer:component-defaults资源中复制tests/test_functional.py - 阅读组件文件(
src/component.py、src/configuration.py、component_config/configSchema.json),并构建tests/setup/configs.json— 参见 vcr-configs-format.md - 对于经过身份验证的 API:向用户索取真实凭据 → 保存到
secrets.json(确认该文件已列入.gitignore) - 搭建脚手架以记录交互:
uv run python -m keboola.datadirtest scaffold [--secrets secrets.json] [--chain-state] - 检查录制文件中是否有未经清理的动态值 — 参见 vcr-sanitizers.md
- 更新
.gitignore、Dockerfile(COPY tests/ tests)和push.yml(使用python -m pytest) - 验证:在本地和 Docker 中运行
python -m pytest
所有脚手架命令请参见 vcr-quickstart.md。常见故障请参见 vcr-troubleshooting.md。
参考资料
| 文件 | 阅读时机 |
|---|---|
references/datadir-tests.md | 设置 datadir 测试 — 目录结构、config.json、输出断言、状态、错误情况 |
references/unit-and-mock-tests.md | 单元测试、模拟模式、freezegun,以及按组件类型划分的测试 |
references/vcr-configs-format.md | 构建 configs.json — 封装格式、OAuth、写入器、覆盖率指南 |
references/vcr-sanitizers.md | 添加 VCR_SANITIZERS — DefaultSanitizer、ResponseUrlSanitizer、QueryParamSanitizer |
references/vcr-quickstart.md | 所有脚手架/录制命令及仓库布局 |
references/vcr-troubleshooting.md | 常见 VCR 故障及修复方法 |
references/vcr-debug-from-platform.md | 根据 Keboola 平台调试任务输出(stage_output.zip)编写回归测试 |
评论
支持 Markdown