
Un pipeline vert rassure, mais ne dit pas tout. Sans rapports qualité visibles dans la MR, les reviewers ne savent pas quels tests échouent, ni si la couverture monte ou baisse. Ce lab vous apprend à rendre les résultats lisibles directement dans GitLab pour améliorer la décision de merge.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Générer un rapport JUnit depuis pytest
- Publier ce rapport comme artifact reconnu par GitLab
- Extraire une couverture avec
coverage: - Lire ces informations dans les widgets de Merge Request
Dans quel contexte ?
Section intitulée « Dans quel contexte ? »Dans un flux d’équipe, la MR est le point de vérité pour décider un merge. Si les infos qualité sont cachées dans des logs longs, elles sont peu consultées. En affichant les résultats au bon endroit, vous rendez la qualité visible et actionnable.
Ce lab répond à des besoins réels :
- repérer immédiatement un test cassé dans une MR
- suivre l’évolution de la couverture
- éviter les merges “à l’aveugle”
Prérequis
Section intitulée « Prérequis »- Lab 09 — Publier dans le registry terminé
- Avoir lu Rapports qualité
Point de départ
Section intitulée « Point de départ »-
Basculez sur la branche du lab
Fenêtre de terminal cd pipeline-craftgit checkout starter/lab-10 -
Ouvrez le job
pytestdans.gitlab-ci.ymlVous allez y ajouter la production de rapport et l’extraction de couverture.
Le problème
Section intitulée « Le problème »Sans configuration explicite, GitLab ne sait pas interpréter vos résultats de test. Vous devez lui fournir :
- un fichier JUnit via
artifacts.reports.junit - une expression
coverage:pour extraire le pourcentage
L’exercice
Section intitulée « L’exercice »Étape 1 — Générer le rapport JUnit
Section intitulée « Étape 1 — Générer le rapport JUnit »-
Modifiez la commande pytest
script:- pytest -v --junitxml=report.xml --cov=app --cov-report=term-missing -
Ajoutez l’artifact JUnit
artifacts:when: alwayspaths:- report.xmlreports:junit: report.xmlexpire_in: 7 daysLe
when: alwaysest important pour conserver le rapport même en cas d’échec.
Étape 2 — Extraire la couverture
Section intitulée « Étape 2 — Extraire la couverture »-
Ajoutez la regex de couverture sur le job
pytestcoverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/' -
Vérifiez localement la sortie de pytest
La regex doit correspondre à la ligne
TOTAL ... 87%du rapport terminal. -
Ajustez la regex si besoin
Une regex trop stricte est une cause classique de couverture “non détectée”.
Étape 3 — Vérifier dans la MR
Section intitulée « Étape 3 — Vérifier dans la MR »-
Poussez vos modifications
Fenêtre de terminal git add .gitlab-ci.ymlgit commit -m "ci: publish junit and coverage"git push origin starter/lab-10 -
Ouvrez une Merge Request
-
Vérifiez l’onglet tests et la couverture affichée
L’objectif est de lire la qualité sans ouvrir les logs complets.
Vérification
Section intitulée « Vérification »-
report.xmlest généré et publié - GitLab affiche les tests dans la MR
- Le pourcentage de couverture est extrait
- Les reviewers peuvent lire les résultats sans parcourir les logs
Pièges fréquents
Section intitulée « Pièges fréquents »La couverture peut ne pas apparaître si la regex ne matche pas la sortie réelle. Vérifiez toujours la ligne exacte produite par pytest-cov.
Le rapport JUnit peut être vide si le chemin est incorrect ou si la commande pytest échoue avant génération. Dans ce cas, when: always aide au diagnostic car l’artifact est tout de même uploadé.
À retenir
Section intitulée « À retenir »- Les rapports qualité doivent être visibles dans la MR, pas cachés dans les logs
- JUnit + coverage améliore la revue et la confiance de merge
- Une bonne regex coverage est essentielle
- Les artifacts rendent le diagnostic reproductible