Bird
Raised Fist0
dbtdata~5 mins

Running tests with dbt test - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is the purpose of the dbt test command?
The dbt test command runs tests defined in your dbt project to check data quality and integrity in your models.
Click to reveal answer
beginner
Name two types of tests you can run with dbt test.
You can run schema tests (like uniqueness, not null) and data tests (custom SQL queries that return zero rows if data is correct).
Click to reveal answer
intermediate
How do you define a schema test in dbt?
Schema tests are defined in your model's YAML file under the tests key, specifying tests like unique or not_null on columns.
Click to reveal answer
beginner
What does it mean if dbt test returns failures?
It means some data did not pass the tests, indicating possible data quality issues that need investigation.
Click to reveal answer
intermediate
Can you run tests on specific models with dbt test? How?
Yes, by using the --select flag with model names or tags, e.g., dbt test --select my_model runs tests only on that model.
Click to reveal answer
What command runs all tests in a dbt project?
Adbt compile
Bdbt run
Cdbt test
Ddbt build
Which of these is NOT a built-in schema test in dbt?
Aaccepted_values
Bnot_null
Cunique
Dgreater_than
What does a data test in dbt return if the data passes the test?
AZero rows
BOne row
CError message
DAll rows
How do you run tests only on a specific model named 'sales'?
Adbt test --select sales
Bdbt run --model sales
Cdbt test sales
Ddbt compile --select sales
If dbt test finds failing tests, what should you do next?
AIgnore the failures
BInvestigate data issues and fix them
CDelete the model
DRun <code>dbt compile</code>
Explain how to define and run a schema test in dbt.
Think about where you write tests and how you execute them.
You got /3 concepts.
    Describe the difference between schema tests and data tests in dbt.
    One tests structure, the other tests content.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of running dbt test in a dbt project?
      easy
      A. To deploy the dbt project to production
      B. To build new data models from raw data
      C. To check data quality and find errors in your data models
      D. To generate documentation for your data models

      Solution

      1. Step 1: Understand the role of dbt test

        dbt test runs tests defined in your project to check data quality and catch errors.
      2. Step 2: Differentiate from other dbt commands

        Building models is done with dbt run, deployment is outside dbt test, and documentation is generated with dbt docs.
      3. Final Answer:

        To check data quality and find errors in your data models -> Option C
      4. Quick Check:

        dbt test = data quality checks [OK]
      Hint: Remember: test = check data quality, run = build models [OK]
      Common Mistakes:
      • Confusing dbt test with dbt run
      • Thinking dbt test deploys models
      • Assuming dbt test generates docs
      2. Which of the following is the correct command to run tests only on a specific model named customers?
      easy
      A. dbt test --select customers
      B. dbt run --models customers
      C. dbt test --models customers
      D. dbt test --only customers

      Solution

      1. Step 1: Identify the correct flag for running tests on specific models

        The flag --select is used with dbt test to specify which models to test.
      2. Step 2: Check other options for correctness

        dbt run builds models, not tests. --models is not a valid flag for dbt test. --only is not a valid flag.
      3. Final Answer:

        dbt test --select customers -> Option A
      4. Quick Check:

        Use --select to target tests [OK]
      Hint: Use --select flag to run tests on specific models [OK]
      Common Mistakes:
      • Using dbt run instead of dbt test
      • Using invalid flags like --models or --only
      • Confusing --select with other flags
      3. Given this schema.yml test definition:
      models:
        - name: orders
          tests:
            - unique:
                column_name: order_id
            - not_null:
                column_name: order_date

      What will dbt test check for the orders model?
      medium
      A. It checks that order_id is unique and order_date has no null values
      B. It checks that order_id has no null values and order_date is unique
      C. It checks that both order_id and order_date are unique
      D. It checks that both order_id and order_date have no null values

      Solution

      1. Step 1: Read the test types for each column

        The test unique applies to order_id, ensuring no duplicates. The test not_null applies to order_date, ensuring no missing values.
      2. Step 2: Match tests to their meaning

        unique means no duplicates; not_null means no nulls. So the checks are: order_id is unique and order_date has no null values.
      3. Final Answer:

        It checks that order_id is unique and order_date has no null values -> Option A
      4. Quick Check:

        unique = no duplicates, not_null = no nulls [OK]
      Hint: unique = no duplicates, not_null = no nulls [OK]
      Common Mistakes:
      • Mixing up unique and not_null tests
      • Assuming both columns have the same test
      • Ignoring the column_name key in test definitions
      4. You run dbt test but get an error: Compilation Error: Could not find test 'uniquee'. What is the likely cause?
      medium
      A. The test passed with no errors
      B. The model name is incorrect
      C. The database connection is missing
      D. A typo in the test name in schema.yml

      Solution

      1. Step 1: Analyze the error message

        The error says it cannot find test 'uniquee', which looks like a misspelled test name.
      2. Step 2: Identify common causes of compilation errors

        Typos in test names in schema.yml cause dbt to fail to find the test. Model name or connection errors produce different messages.
      3. Final Answer:

        A typo in the test name in schema.yml -> Option D
      4. Quick Check:

        Compilation errors often mean typos [OK]
      Hint: Check spelling of test names in schema.yml [OK]
      Common Mistakes:
      • Ignoring typo errors and rerunning blindly
      • Assuming connection issues cause compilation errors
      • Confusing model name errors with test name errors
      5. You want to ensure that the email column in your users model is unique and not null. You also want to run tests only on this model. Which schema.yml snippet and command combination is correct?
      hard
      A.
      models:
        - name: users
          tests:
            - unique
            - not_null

      Command: dbt test --models users
      B.
      models:
        - name: users
          columns:
            - name: email
              tests:
                - unique
                - not_null

      Command: dbt test --select users
      C.
      models:
        - name: users
          columns:
            - name: email
              tests:
                - unique
                - not_null

      Command: dbt run --models users
      D.
      models:
        - name: users
          tests:
            - unique
            - not_null

      Command: dbt test --select users

      Solution

      1. Step 1: Identify correct test syntax in schema.yml

        Tests on columns are defined under columns with name and tests list.
        models:
          - name: users
            columns:
              - name: email
                tests:
                  - unique
                  - not_null

        Command: dbt test --select users shows the correct format.
      2. Step 2: Choose the correct command to run tests on the users model

        dbt test --select users runs tests only on the users model.
        models:
          - name: users
            columns:
              - name: email
                tests:
                  - unique
                  - not_null

        Command: dbt test --select users uses this command correctly.
      3. Final Answer:

        Option B with column-level tests and dbt test --select users -> Option B
      4. Quick Check:

        Column tests + --select flag = correct [OK]
      Hint: Define tests under columns, run with --select flag [OK]
      Common Mistakes:
      • Defining tests directly under model without column_name (invalid syntax)
      • Using dbt run instead of dbt test
      • Using incorrect flags like --models