Skip to main content

dbt-test

Add schema tests, unit tests, and data quality checks to dbt models. Use when validating data integrity, adding test definitions to schema.yml, writing unit tests, or practicing test-driven development in dbt. Powered by altimate-dbt.

Informations de source

Dépôt
AltimateAI/altimate-code
Dernière activité de la source
10 avril 2026 à 09:36
Langue détectée de SKILL.md
anglais
Étoiles
805
Forks
122

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Explorateur de fichiers
5 fichiers

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
dbt-test
description
Add schema tests, unit tests, and data quality checks to dbt models. Use when validating data integrity, adding test definitions to schema.yml, writing unit tests, or practicing test-driven development in dbt. Powered by altimate-dbt.
# dbt Testing ## Requirements **Agent:** builder or migrator (requires file write access) **Tools used:** bash (runs `altimate-dbt` commands), read, glob, write, edit, altimate_core_testgen, altimate_core_validate ## When to Use This Skill **Use when the user wants to:** - Add tests to a model's schema.yml (unique, not_null, relationships, accepted_values) - Write dbt unit tests (mock inputs → expected outputs) - Create custom generic or singular tests - Debug why a test is failing - Practice test-driven development in dbt **Do NOT use for:** - Creating or modifying model SQL → use `dbt-develop` - Writing model descriptions → use `dbt-docs` - Debugging build/compilation errors → use `dbt-troubleshoot` ## The Iron Rule **Never modify a test to make it pass without understanding why it's failing.** A failing test is information. It means either: 1. The data has a real quality issue (fix the data or the model) 2. The test expectation is wrong (update the test with justification) 3. The model logic is wrong (fix the model) Option 2 requires explicit user confirmation. Do not silently weaken tests. ## Schema Test Workflow ### 1. Discover Columns ```bash altimate-dbt columns --model <name> altimate-dbt column-values --model <name> --column <col> ``` ### 2. Read Existing Tests ```bash glob models/**/*schema*.yml models/**/*_models.yml read <yaml_file> ``` ### 3. Generate Tests **Auto-generate with `altimate_core_testgen`:** Pass the compiled SQL and schema to generate boundary-value, NULL-handling, and edge-case test assertions automatically. This produces executable test SQL covering cases you might miss manually. ``` altimate_core_testgen(sql: <compiled_sql>, schema_context: <schema_object>) ``` Review the generated tests — keep what makes sense, discard trivial ones. Then apply test rules based on column patterns — see [references/schema-test-patterns.md](references/schema-test-patterns.md). ### 4. Write YAML Merge into existing schema.yml (don't duplicate). Use `edit` for existing files, `write` for new ones. ### 5. Validate SQL Before running, validate the compiled model SQL to catch syntax and schema errors early: ``` altimate_core_validate(sql: <compiled_sql>, schema_context: <schema_object>) ``` ### 6. Run Tests ```bash altimate-dbt test --model <name> # run tests for this model altimate-dbt build --model <name> # build + test together ``` ## Unit Test Workflow **For automated unit test generation, use the `dbt-unit-tests` skill instead.** It analyzes model SQL, generates type-correct mock data, and assembles complete YAML automatically. See [references/unit-test-guide.md](references/unit-test-guide.md) for the full unit test framework. ### Quick Pattern ```yaml unit_tests: - name: test_order_total_calculation model: fct_orders given: - input: ref('stg_orders') rows: - { order_id: 1, quantity: 3, unit_price: 10.00 } - { order_id: 2, quantity: 1, unit_price: 25.00 } expect: rows: - { order_id: 1, order_total: 30.00 } - { order_id: 2, order_total: 25.00 } ``` ## Common Mistakes | Mistake | Fix | |---------|-----| | Testing every column with `not_null` | Only test columns that should never be null. Think about what NULL means. | | Missing `unique` test on primary keys | Every primary key needs `unique` + `not_null` | | `accepted_values` with incomplete list | Use `altimate-dbt column-values` to discover real values first | | Modifying a test to make it pass | Understand WHY it fails first. The test might be right. | | No `relationships` test on foreign keys | Add `relationships: {to: ref('parent'), field: parent_id}` | | Unit testing trivial logic | Don't unit test `SELECT a, b FROM source`. Test calculations and business logic. | ## Reference Guides | Guide | Use When | |-------|----------| | [references/altimate-dbt-commands.md](references/altimate-dbt-commands.md) | Need the full CLI reference | | [references/schema-test-patterns.md](references/schema-test-patterns.md) | Adding schema.yml tests by column pattern | | [references/unit-test-guide.md](references/unit-test-guide.md) | Writing dbt unit tests | | [references/custom-tests.md](references/custom-tests.md) | Creating generic or singular tests |
Voir sur GitHub