Переопределение в модульных тестах
При настройке вашего модульного теста вы можете переопределить вывод макросов, переменных проекта или переменных окружения для данного модульного теста.
- name: test_my_model_overrides
model: my_model
given:
- input: ref('my_model_a')
rows:
- {id: 1, a: 1}
- input: ref('my_model_b')
rows:
- {id: 1, b: 2}
- {id: 2, b: 2}
overrides:
macros:
type_numeric: override
invocation_id: 123
vars:
my_test: var_override
env_vars:
MY_TEST: env_var_override
expect:
rows:
- {macro_call: override, var_call: var_override, env_var_call: env_var_override, invocation_id: 123}
Макросы
Вы можете переопределить вывод любого макроса в определении вашего модульного теста.
Если модель, которую вы тестируете, использует эти макросы, вы должны их переопределить:
is_incremental: Если вы тестируете инкрементальную модель, вы должны явно установитьis_incrementalвtrueилиfalse. Подробнее о тестировании инкрементальных моделей можно прочитать здесь.
unit_tests:
- name: my_unit_test
model: my_incremental_model
overrides:
macros:
# тестирование этой модели в режиме "полного обновления"
is_incremental: false
...
dbt_utils.star: Если вы тестируете модель, которая использует макросstar, вы должны явно установитьstarв список столбцов. Это необходимо, потому чтоstarпринимает только relation для аргументаfrom; тестовые данные вводятся непосредственно в SQL модели, заменяя функциюref('')илиsource(''), что приводит к сбою макросаstar, если он не переопределен.
unit_tests:
- name: my_other_unit_test
model: my_model_that_uses_star
overrides:
macros:
# явно установить star в соответствующий список столбцов
dbt_utils.star: col_a,col_b,col_c
...
0