Supported data formats for unit tests
Currently, mock data for unit testing in dbt supports three formats:
- dict(default): Inline dictionary values.
- csv: Inline CSV values or a CSV file.
- sql: Inline SQL query or a SQL file. Note: For this format you must supply mock data for all rows.
dict
The dict data format is the default if no format is defined.
dict requires an inline dictionary for rows:
unit_tests:
  - name: test_my_model
    model: my_model
    given:
      - input: ref('my_model_a')
        format: dict
        rows:
          - {id: 1, name: gerda}
          - {id: 2, b: michelle}    
csv
When using the csv format, you can use either an inline CSV string for rows:
unit_tests:
  - name: test_my_model
    model: my_model
    given:
      - input: ref('my_model_a')
        format: csv
        rows: |
          id,name
          1,gerda
          2,michelle
Or, you can provide the name of a CSV file in the tests/fixtures directory (or the configured test-paths location) of your project for fixture:
unit_tests:
  - name: test_my_model
    model: my_model
    given:
      - input: ref('my_model_a')
        format: csv
        fixture: my_model_a_fixture
sql
Using this format:
- Provides more flexibility for the types of data you can unit test
- Allows you to unit test a model that depends on an ephemeral model
However, when using format: sql you must supply mock data for all rows.
When using the sql format, you can use either an inline SQL query for rows:
unit_tests:
  - name: test_my_model
    model: my_model
    given:
      - input: ref('my_model_a')
        format: sql
        rows: |
          select 1 as id, 'gerda' as name, null as loaded_at union all
          select 2 as id, 'michelle', null as loaded_at as name
Or, you can provide the name of a SQL file in the tests/fixtures directory (or the configured test-paths location) of your project for fixture:
unit_tests:
  - name: test_my_model
    model: my_model
    given:
      - input: ref('my_model_a')
        format: sql
        fixture: my_model_a_fixture
Note: Jinja is unsupported in SQL fixtures for unit tests.