Fearless testing for dbt models, powered by DuckDB.
pytest-dbt-duckdb is an open-source testing framework that allows you to validate dbt models end-to-end, using DuckDB as an in-memory execution engine. Designed for speed, portability, and CI/CD automation, it enables you to test dbt transformations before deployment, ensuring trust in your data.
"Assumptions are dangerous." An untested model is a ticking time bomb—silent, unseen, but waiting to fail at the worst possible moment. This library ensures your transformations, dependencies, and outputs are battle-tested before deployment.
Modern analytics teams move fast—but in their race to ship, they often skip a crucial step: rigorous testing. A broken transformation can mean misreported revenue, misleading product insights, or silent failures that creep into dashboards.
"Each dbt model untested is a story unfinished."
Here, in the shadows of SQL models and YAML configurations, we forge a guardian—a pytest plugin that ensures every dbt model is battle-tested, validated, and ready before it touches production.
With DuckDB as the testing engine, you can:
- Define test cases with simple YAML scenarios.
- Execute them in DuckDB, locally and instantly—no warehouse needed.
- Integrate with CI/CD pipelines, catching errors before deployment.
- Extend with custom DuckDB functions for specialized assertions.
Data must be tested, not trusted. Let’s test fearlessly.
Whether you are a craftsman of data or a guardian of analytics, this library is your lantern in the dark, guiding you toward precision and reliability.
- Data Engineers → Validate dbt models before they reach production.
- Analytics Engineers → Ensure clean, tested data in dashboards.
- CI/CD Developers → Automate SQL testing in pull requests.
Feature | Description |
---|---|
✅ Fast Testing | Runs entirely in DuckDB—no warehouse costs. |
🛠️ YAML-Based Tests | Define test scenarios using declarative YAML. |
♻️ CI/CD Ready | Seamless integration with GitHub Actions, Jenkins, GitLab CI/CD. |
🔌 Custom Functions | Extend with user-defined DuckDB functions. |
🧪 Snapshot Testing | Compare actual vs. expected outputs with precision. |
➡️ See the Usage Section