Переопределение в модульных тестах
При настройке вашего модульного теста вы можете переопределить вывод макросов, переменных проекта или переменных окружения для данного модульного теста.
- 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