Contribuer

Configuration avancée de la couverture de code

Exclure des fichiers de la mesure de couverture des tests d'une application, avec la section [tool.coverage] de son pyproject.toml.

Configuration avancée de la couverture de code

La couverture de code mesure les lignes exécutées par les tests. Elle montre les parties d'une application que les tests ne vérifient pas.

Mesurer la couverture

bench --site <site-de-test> run-tests --app <mon_app> --coverage

La mesure porte sur les fichiers Python du dossier apps/<mon_app>. À la fin des tests, Dodock écrit le rapport coverage.xml dans le dossier sites/ du bench.

bench run-parallel-tests accepte l'option --with-coverage, ou la variable d'environnement CAPTURE_COVERAGE.

Exclusions standard

Dodock exclut toujours de la mesure : les fichiers JavaScript, CSS, HTML, Vue et XML, les dossiers test_*, node_modules et patches, et les fichiers *_dashboard.py des types de document.

Pour l'application frappe, Dodock exclut aussi les dossiers tests et commands, et les fichiers testés par la suite de tests des commandes.

Ajouter des exclusions propres à une application

Une application peut exclure d'autres fichiers dans la section [tool.coverage.run] de son fichier pyproject.toml. Dodock ajoute ces motifs aux exclusions standard : il ne les remplace pas.

mon_app/pyproject.toml
[tool.coverage.run]
omit = [
    # Les tests ne sont pas du code de production
    "*/tests/*",
    "*/doctype/*/test_*.py",
    # Code ancien, remplacé par le module facturation
    "mon_app/utils/legacy_code.py",
]

Un motif qui ne commence pas par *, ? ou / est relatif au dossier de l'application. Dodock le complète avec le chemin apps/<mon_app>/.

Les autres réglages de la section [tool.coverage] (par exemple [tool.coverage.report]) s'appliquent aussi. Sans section [tool.coverage], seules les exclusions standard s'appliquent.

Un fichier .coveragerc dans le dossier de l'application n'est pas lu. Utilisez le fichier pyproject.toml.

Bonnes pratiques

  • Excluez seulement le code qui ne doit pas être testé : tests, code généré, code ancien en cours de retrait.
  • Ajoutez un commentaire qui explique chaque exclusion.
  • Relisez les exclusions de temps en temps et retirez celles qui ne servent plus.