test_models
Run dbt tests on models and sources to validate data quality, using constraints like uniqueness and not-null. Supports state-based selection and fail-fast execution.
Instructions
Run dbt tests on models and sources.
When to use: After running models to validate data quality. Tests check constraints like uniqueness, not-null, relationships, and custom data quality rules.
Important: Ensure seeds and models are built before running tests that depend on them.
State-based selection modes (uses dbt state:modified selector):
select_state_modified: Test only models modified since last successful run (state:modified)
select_state_modified_plus_downstream: Test modified + downstream dependencies (state:modified+) Note: Requires select_state_modified=True
Manual selection (alternative to state-based):
select: dbt selector syntax (e.g., "customers", "tag:mart", "test_type:generic")
exclude: Exclude specific tests
Args: select: Manual selector for tests/models to test exclude: Exclude selector select_state_modified: Use state:modified selector (changed models only) select_state_modified_plus_downstream: Extend to state:modified+ (changed + downstream) fail_fast: Stop execution on first failure keep_cte_tests: Keep generated CTE test files for debugging (default: False) state: Shared state object injected by FastMCP
Returns: Test results with status and failures
See also: - run_models(): Execute models before testing them - build_models(): Run models + tests together automatically - load_seeds(): Load seeds if tests reference seed data
Examples: # After building a model, test it run_models(select="customers") test_models(select="customers")
# Test only generic tests (not singular)
test_models(select="test_type:generic")
# Test everything that changed
test_models(select_state_modified=True)
# Stop on first failure for quick feedback
test_models(fail_fast=True)
# Keep CTE test files for debugging
test_models(keep_cte_tests=True)Note: Unit test failures show diffs in the "daff" tabular format: @@ = column headers +++ = row in actual, not in expected (extra row) --- = row in expected, not in actual (missing row) → = row with modified cell(s), shown as old_value→new_value ... = omitted matching rows Full format spec: https://paulfitz.github.io/daff-doc/spec.html
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| select | No | ||
| exclude | No | ||
| select_state_modified | No | ||
| select_state_modified_plus_downstream | No | ||
| fail_fast | No | ||
| keep_cte_tests | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||