Personnalisation

Configuration avancée de la couverture de code

Personnaliser les exclusions de couverture pour les applications Dokos et Frappe

Configuration avancée de la couverture de code

Dokos et Frappe permettent de mesurer la couverture de code lors de l'exécution des tests unitaires. Cette fonctionnalité aide les développeurs à identifier les parties du code qui ne sont pas testées et à améliorer la qualité des applications.

Exclusions de couverture par application

Depuis la version 5 de Dokos, chaque application peut définir ses propres règles d'exclusion de couverture de code. Cela permet une gestion plus fine et plus adaptée aux besoins spécifiques de chaque projet.

Configuration des exclusions

Pour configurer les exclusions de couverture pour une application spécifique, vous devez créer ou modifier le fichier .coveragerc à la racine de votre application. Voici un exemple de configuration :

[run]
omit =
    */tests/*
    */doctype/*/test_*.py
    */patches/*
    */hooks.py

Fonctionnement

  1. Détection automatique : Lors de l'exécution des tests avec couverture, le système recherche automatiquement un fichier .coveragerc dans le répertoire de chaque application testée.
  2. Priorité : Les règles définies dans le .coveragerc de l'application prennent le pas sur les exclusions globales définies dans Frappe.
  3. Application : Les exclusions sont appliquées uniquement aux fichiers de l'application concernée, sans affecter les autres applications testées simultanément.

Exemple pratique

Supposons que vous développiez une application personnalisée appelée ma_super_app et que vous souhaitiez exclure certains fichiers spécifiques de la couverture de code :

  1. Créez un fichier .coveragerc à la racine de votre application :
    touch apps/ma_super_app/.coveragerc
    
  2. Éditez le fichier pour ajouter vos exclusions :
    [run]
    omit =
        */ma_super_app/utils/legacy_code.py
        */ma_super_app/doctype/ancien_module/*
    
  3. Exécutez vos tests avec la couverture de code :
    bench --site [nom_du_site] run-tests --app ma_super_app --coverage
    
  4. Consultez le rapport de couverture généré dans sites/[nom_du_site]/coverage pour vérifier que vos exclusions ont été prises en compte.

Bonnes pratiques

  • Exclusions ciblées : N'excluez que les fichiers qui ne peuvent pas ou ne doivent pas être testés (code legacy, fichiers générés automatiquement, etc.).
  • Documentation : Documentez les raisons des exclusions dans un commentaire dans le fichier .coveragerc pour faciliter la maintenance.
  • Revues régulières : Passez en revue vos exclusions périodiquement pour vous assurer qu'elles sont toujours pertinentes.
  • Tests unitaires : Même si certains fichiers sont exclus de la couverture, essayez de maintenir une bonne couverture globale pour garantir la qualité de votre code.

Commandes utiles

# Exécuter les tests avec couverture pour une application spécifique
bench --site [nom_du_site] run-tests --app [nom_de_l_app] --coverage

# Générer un rapport HTML de la couverture
coverage html -d sites/[nom_du_site]/coverage

Intégration avec les outils CI/CD

Cette fonctionnalité est particulièrement utile dans les pipelines CI/CD pour :

  • Maintenir des seuils de couverture cohérents entre différentes applications
  • Exclure automatiquement les fichiers non pertinents des rapports de couverture
  • Adapter les exigences de couverture aux spécificités de chaque projet

::: info Cette fonctionnalité est particulièrement utile pour les développeurs travaillant sur des applications personnalisées ou des extensions de Dokos, permettant une configuration plus fine et adaptée aux besoins spécifiques de chaque projet. :::