← ClaudeAtlas

testing-dbt-projectslisted

Add data quality tests to a dbt project — generic tests (unique, not_null, accepted_values, relationships), singular tests, unit tests, dbt-utils and dbt-expectations packages, and source freshness. Use when adding tests to dbt models, catching data quality regressions, validating assumptions, or setting up source freshness checks.
Unknown-333/awesome-data-engineering-skills · ★ 16 · Testing & QA · score 68
Install: claude install-skill Unknown-333/awesome-data-engineering-skills
# Testing dbt Projects ## When to use - Adding or improving tests on dbt models and sources. - Guarding a known assumption (grain, referential integrity, value ranges). - Validating transformation logic with fixed inputs (unit tests). - Setting up source freshness monitoring. - Do NOT use for optimizing model SQL (use `building-dbt-models`). ## Workflow ``` - [ ] Add grain test: unique + not_null on the primary/surrogate key - [ ] Add relationships tests for every foreign key - [ ] Add accepted_values / range tests for constrained columns - [ ] Add singular/unit tests for critical business logic - [ ] Configure source freshness - [ ] Run: dbt test (and dbt build to test as you materialize) ``` 1. **Test the grain first** — `unique` + `not_null` on the key catches the most common and most damaging bug (fan-out duplicates). 2. **Test relationships** — every foreign key should point to an existing parent. 3. **Constrain values** — `accepted_values` for enums, range checks for numerics. 4. **Unit-test logic** — for tricky CASE/window/dedup logic, assert exact output from fixed input (dbt 1.8+ `unit_tests`). 5. **Freshness** — alert when a source stops updating before models run stale. ## Patterns **Generic tests in schema.yml:** ```yaml models: - name: fct_orders columns: - name: order_id tests: [unique, not_null] - name: customer_id tests: - relationships: to: ref('dim_customer') field: custome