Couverture De Test De Modèle Django

Existe-t-il un moyen de produire un rapport contenant la couverture de code dans ma suite de tests django pour les modèles de mon site? J'ai déjà une couverture pour python, mais la couverture pour les modèles pour identifier le code de modèle mort ou non testé serait géniale.

Pour clarifier: je veux trouver des lignes dans Mes modèles qui ne sont jamais exécutées ou émises pendant ma suite de tests.

21
demandé sur jterrace 2012-03-08 10:30:21

3 réponses

Regarder Django Modèle outil de Couverture: https://github.com/traff/dtcov C'est exactement ce dont vous avez besoin.

EDIT: la couverture du modèle Django a été fusionnée à coverage.py comme un plugin: http://nedbatchelder.com/blog/201501/coveragepy_for_django_templates.html

Il est recommandé de l'utiliser à la place du projet original.

10
répondu Dmitry Trofimov 2015-04-22 18:12:31

Les modèles ne stockent aucun type d'informations de numéro de ligne comme le fait le code source python. Le mieux que vous puissiez faire est de corriger l'objet nodeList pour enregistrer combien de fois chaque nœud a été évalué, puis de restituer les modèles dans un mode spécial qui montrera quels nœuds sont évalués.

EDIT: j'ai été corrigé.

Les Modèles

Stockent les informations de numéro de ligne, mais uniquement pour le début d'un jeton. C'est-à-dire si vous avez un TextNode couvrant plusieurs lignes, vous aurez besoin pour gérer vous-même. Il y a du code intéressant dans django.modèle.débogage qui peut être utile pour construire un tel reporter de couverture.

1
répondu Thomas 2012-03-09 01:38:49

Je ne pense pas que vous puissiez obtenir des informations de couverture à partir de modèles, mais vous pouvez trouver quels modèles sont rendus en connectant le signal template_rendered. Votre récepteur stockerait les noms des modèles rendus.

Ensuite, vous pouvez facilement trouver des modèles qui sont pas rendus avec la commande find.

0
répondu jpic 2012-03-15 14:00:07