dbt a introduit les tests unitaires natifs dans la version 1.8 (mai 2024). Ce hub couvre l’implémentation : syntaxe, patterns de mocking, problèmes spécifiques à BigQuery, organisation du projet et intégration CI/CD. Pour la place des tests unitaires dans l’approche globale de test, voir le hub de stratégie de tests. Pour savoir quels modèles justifient des tests unitaires, voir Quand écrire des tests unitaires dbt.
Prérequis
- Un projet dbt tournant sur dbt 1.8 ou supérieur
- Familiarité avec les mécanismes de test dbt
- Compréhension de la différence entre tests unitaires et tests de données
Ordre de lecture
1. Syntaxe YAML des tests unitaires dbt La référence complète pour écrire du YAML de tests unitaires : éléments requis (name, model, given, expect), les trois formats d’entrée (dict, csv, sql), la configuration optionnelle (tags, meta, enabled) et les fonctionnalités spécifiques aux versions dbt 1.8, 1.9 et 1.11.
2. Contournements BigQuery pour les tests unitaires dbt
Les pièges spécifiques à BigQuery qui vont vous surprendre : les champs STRUCT doivent être complets, les comparaisons ARRAY échouent avec l’égalité standard, column_transformations avec to_json_string(), implications sur les coûts de slots, et un tableau de dépannage pour les erreurs les plus courantes.
3. Mocker les dépendances dans les tests unitaires dbt
Comment mocker tout ce que votre modèle touche : refs et sources multiples, overrides de macros pour des timestamps déterministes, overrides de variables pour des tests de seuils, et le pattern du mot-clé this pour tester la logique de merge incrémental.
4. Organisation des fichiers de tests unitaires dbt
Où placer les fichiers de tests (_unit_tests.yml co-localisé avec les modèles), fixtures CSV externes, conventions de nommage (test_<modele>_<scenario>) et pourquoi les tests unitaires se concentrent dans la couche mart.
5. Commandes CLI pour les tests unitaires dbt
Exécuter, filtrer et déboguer les tests unitaires depuis la ligne de commande. Le sélecteur test_type:unit, le filtrage par tags, --debug pour l’inspection du SQL généré, et le flag --exclude-resource-type pour les builds de production.
6. Workflow CI/CD pour les tests unitaires dbt
Un workflow GitHub Actions prêt pour la production sur BigQuery : datasets uniques par exécution CI, le flag --empty pour l’optimisation des coûts, nettoyage systématique, et la séparation des tests unitaires (CI) des tests de données (production).
Arbre de décision
Ai-je besoin de tests unitaires ? → [[fr/quand-ecrire-tests-unitaires-dbt|Quand écrire des tests unitaires dbt]]
Oui — comment en écrire un ? → [[fr/syntaxe-yaml-tests-unitaires-dbt|Syntaxe YAML des tests unitaires dbt]]
Mon modèle a des dépendances complexes → [[fr/mocking-dependances-tests-unitaires-dbt|Mocker les dépendances dans les tests unitaires dbt]]
Je suis sur BigQuery et j'ai des erreurs → [[fr/tests-unitaires-dbt-bigquery|Contournements BigQuery pour les tests unitaires dbt]]
Où vont les fichiers de tests ? → [[fr/organisation-fichiers-tests-unitaires-dbt|Organisation des fichiers de tests unitaires dbt]]
Comment les exécuter en CI ? → [[fr/workflow-ci-cd-tests-unitaires-dbt|Workflow CI/CD pour les tests unitaires dbt]]Série connexe
Ce hub couvre les fondamentaux d’implémentation. La série d’articles sources continue avec :
- Partie 2 : Exemples réels et patterns — tester les modèles incrémentaux, la logique de snapshot, les fonctions de fenêtre et les patterns d’analytics marketing