Intégration de fichiers .coverage python générés par ligne de commande avec PyDev
-
08-07-2019 - |
Question
Mon environnement de construction est configuré pour compiler, exécuter et créer un fichier de couverture sur la ligne de commande (à l'aide de l'outil Ned Batchelder coverage.py).
J'utilise Eclipse avec PyDev comme éditeur, mais pour des raisons pratiques, il m'est impossible de convertir tout mon environnement de construction en Eclipse (et de générer ainsi les données de couverture directement à partir de l'EDI, car il est conçu pour faire)
PyDev semble utiliser le même outil de couverture (ou quelque chose de très similaire) pour générer ses informations de couverture. Je suppose donc qu'il devrait exister un moyen d'intégrer mes fichiers de couverture externes dans Eclipse / PyDev.
Avez-vous une idée de la façon de procéder?
La solution
J'avais exactement besoin de quelque chose comme ça il y a quelque temps, quand PyDev utilisait encore une version plus ancienne de coverage.py
que celle accessible depuis la page du créateur du script.
Ce que j’ai fait, c’était de détecter où PyDev enregistrait son fichier .coverage
. Pour moi c'était:
C:\Users\Admin\workspace\.metadata\.plugins\org.python.pydev.debug\.coverage
Ensuite, j'ai exécuté manuellement une nouvelle version de coverage.py
à partir d'un script distinct et lui ai dit de sauvegarder son fichier .coverage à l'emplacement où PyDev l'enregistre. Je ne me souviens pas s'il existe un argument de ligne de commande pour coverage.py
ou si j'ai simplement copié le fichier .coverage
avec un script, mais après cela, si vous ouvrez tout simplement Dans la vue Résultats de la couverture de code , cliquez sur Actualiser les informations de couverture! . PyDev traitera ainsi les données comme si elles avaient généré le fichier lui-même.
Autres conseils
Je ne connais rien à l'intégration de couverture.py par PyDev (ou même s'il utilise la couverture.py), mais les fichiers .coverage sont assez simples. Ce sont des dictionnaires marhsales.
Je n'ai pas testé ce code, mais vous pouvez essayer de combiner deux fichiers .coverage en un seul:
import marshal
c1_dict = marshal.load(open(file_name_1, 'rb'))
c2_dict = marshal.load(open(file_name_2, 'rb'))
c1_dict.update(c2_dict)
marshal.dump(c1_dict, open(file_name_out, 'wb'))