test-component
Keboola Component Tester
Testing approach
Three levels, in priority order:
- Datadir tests — functional tests using KBC_DATADIR structure; the primary method for all components
- Unit tests — isolated logic tests for transformations, validation, config parsing
- VCR functional tests — for components that call external HTTP APIs (preferred over manual mocks for extractors/writers)
Choosing VCR vs mocks
Use VCR (keboola.datadirtest) when the component makes external HTTP calls:
- Records real API interactions once → replays deterministically in CI without credentials
- More realistic than hand-rolled mocks; catches API contract changes
- Required for extractors; recommended for writers that call external APIs
Use mocks (unittest.mock) when:
- Testing pure logic, transformation, or validation code
- Writing unit tests for individual functions
- The component has no HTTP calls (applications, pure transformations)
VCR setup workflow
- Add
keboola.datadirtest>=2.0.0topyproject.tomldev dependencies, runuv sync -U - Copy
tests/test_functional.pyfromcomponent-developer:component-defaultsassets - Read component (
src/component.py,src/configuration.py,component_config/configSchema.json) and buildtests/setup/configs.json— see vcr-configs-format.md - For authenticated APIs: ask user for real credentials →
secrets.json(verify it's in.gitignore) - Scaffold to record:
uv run python -m keboola.datadirtest scaffold [--secrets secrets.json] [--chain-state] - Check cassettes for unsanitized dynamic values — see vcr-sanitizers.md
- Update
.gitignore,Dockerfile(COPY tests/ tests), andpush.yml(usepython -m pytest) - Verify:
python -m pytestlocally and in Docker
See vcr-quickstart.md for all scaffold commands. See vcr-troubleshooting.md for common failures.
References
| File | When to read |
|---|---|
references/datadir-tests.md |
Setting up datadir tests — directory structure, config.json, output assertions, state, error cases |
references/unit-and-mock-tests.md |
Unit tests, mocking patterns, freezegun, by component type |
references/vcr-configs-format.md |
Building configs.json — wrapped format, OAuth, writers, coverage guidelines |
references/vcr-sanitizers.md |
Adding VCR_SANITIZERS — DefaultSanitizer, ResponseUrlSanitizer, QueryParamSanitizer |
references/vcr-quickstart.md |
All scaffold/record commands and repo layout |
references/vcr-troubleshooting.md |
Common VCR failures and fixes |
references/vcr-debug-from-platform.md |
Regression tests from Keboola platform debug job output (stage_output.zip) |
More from keboola/ai-kit
dataapp-dev
Expert for developing Streamlit data apps for Keboola deployment. Activates when building, modifying, or debugging Keboola data apps, Streamlit dashboards, adding filters, creating pages, or fixing data app issues. Validates data structures using Keboola MCP before writing code, tests implementations with Playwright browser automation, and follows SQL-first architecture patterns.
25keboola configuration
Use this skill when working with Keboola project configurations, understanding JSON config files, editing transformations, or analyzing Keboola project structure. Triggers on questions about Keboola configs, transformations, orchestrations, extractors, writers, or .keboola directories.
15debug-component
Expert skill for debugging Keboola Python components. Use when a component is failing,
12keboola-context
>
8reviewer
Expert Python/Keboola component code reviewer focusing on architecture, configuration/client patterns, documentation consistency, and Pythonic best practices. Provides actionable feedback with clear location, pattern identification, and fix guidance.
7debugger
Expert agent for debugging Keboola Python components using Keboola MCP tools, Datadog logs, and local testing. Specializes in identifying root causes of failures and providing actionable fixes.
7