web-dev-qa-db-fra.com

Afficher python résultats les plus instables sous une forme tabulaire agréable

J'écris un outil Pythonic qui valide l'exactitude d'un certain système. Chaque validation est écrite sous la forme Python unittest , et le rapport ressemble à:

test_exclude_list_not_empty (__main__.TestRepoLists)
Assert the the exclude list is not empty ... ok
test_include_list_not_empty (__main__.TestRepoLists)
Assert the the include list is not empty ... ok
test_repo_list_not_empty (__main__.TestRepoLists)
Assert the the repo list is not empty ... ok

À mon avis, ce format est difficile à lire, surtout pour les non-pythonistes. Existe-t-il un générateur de rapport qui peut générer un rapport sous une forme tabulaire agréable, par exemple:

+----------------------------------------------------------------+-----------+
| Test                                                           |  Status   |
+----------------------------------------------------------------+-----------+
| Assert the the exclude list is not empty                       |  OK       |
| Assert the the include list is not empty                       |  OK       |
| Assert the the repo list is not empty                          |  OK       |
| All the items in the include list should be in the repo list   |  OK       |
+----------------------------------------------------------------+-----------+

Clarification La suite de tests s'exécute sur un terminal distant, donc je préfère les outils de génération de rapports en ligne de commande.

19
Adam Matan

Ce n'est pas exactement ce que vous demandez, mais il existe plusieurs options pour avoir une sortie de test lisible:

  • HTMLTestRunner génère des rapports de test HTML faciles à utiliser sous forme de tableau. Ici est un exemple de rapport.
  • nose-html-output plugin pour nose lanceur de test
  • nittest-xml-reporting - Lanceur de test basé sur PyUnit avec JUnit comme le reporting XML
  • nez avec l'option --with-xunit produira des rapports de style junit xml faciles à lire et à convertir

Regarde aussi:

Si vous voulez quand même voir les résultats des tests sous forme de tableau dans la console, je pense qu'une bonne idée serait d'écrire votre propre plugin de nez ou testeur basé sur unittest.TestProgram Comme il a été fait en HTMLTestRunner .

J'espère que cela pourra aider.

29
alecxe

Je voudrais ajouter mes informations en tant que commentaire dans la réponse d'Alecxe, mais je n'ai pas assez de réputation pour cela.

Dans le cas où quelqu'un cherche toujours une réponse, j'ai bifurqué HTMLTestRunner dans un TestRunner simple, qui a une sortie tabulaire, colorée et conviviale pour le terminal. Voici un exemple de sa sortie:

Example

Le code source est à https://Gist.github.com/viniciusd/73e6eccd39dea5e714b1464e3c47e067

Je vais bientôt le réécrire à partir de zéro mais en conservant le format de sortie.

11
Vinicius Dantas

Jetez un oeil à Twisted's Trial .

Par défaut, il utilise le lanceur de test TreeReporter, qui ressemble à:

Trial's reporting

Il présente les éléments suivants:

  • Il s'agit d'un rapport en ligne de commande, exécutez simplement:

    trial test_name.py

  • Sortie couleur: rouge pour l'échec, vert pour le succès

  • Le rapport utilise une structure arborescente. Il affiche les tests sous les TestCases auxquels ils appartiennent, vous permettant de parcourir rapidement les résultats pour trouver un test spécifique. (Bien qu'il en fournisse quelques autres rapports ).

  • Il comprend également une bibliothèque de tests, dérivée de unittest.TestCase De Python. Vous pouvez utiliser cette bibliothèque en sous-classant twisted.trial.unittest.TestCase. Cela fournit quelques autres méthodes d'assertion .

  • Il comprend la possibilité de générer une couverture de relevé pour vos tests.

4
Carlos V