Skip to content

PyTest dbt Duckdb

Fearless testing for dbt models, powered by DuckDB .

What is this?

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.

Why This Exists

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.

Data must be tested, not trusted.

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.

Image title
DBT E2E Test Flow

Who is this for?

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.

Key Features

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.

How It Works

See the Usage Section