Search code examples
dbt

dbt relationship test compilation error: test definition dictionary must have exactly one key


I'm a new user of dbt, trying to write a relationship test:

- name: PROTOCOL_ID
  tests:
    - relationships:
    to: ref('Animal_Protocols')
    field: id

I am getting this error:

Compilation Error
Invalid test config given in models/Animal_Protocols/schema.yml:
test definition dictionary must have exactly one key, got [('relationships', None), ('to', "ref('Animal_Protocols')"), ('field', 'id')] instead (3 keys)
@: UnparsedNodeUpdate(original_file_path='model...ne)

"unique" and "not-null" tests in the same file are working fine, but I have a similar error with "accepted_values".

I am using dbt cli version 0.21.0 with Snowflake on MacOS Big Sur 11.6.


Solution

  • You are very close! I'm 96% sure that this is an indentation issue -- the #1 pain point of working with YAML. The solution is that both to and field need to be indented below the relationships key as opposed to at the same level.

    See the Tests dbt docs page for an example

      - name: PROTOCOL_ID
        tests:
          - relationships:
              to: ref('Animal_Protocols')
              field: id