2010-10-15 16 views
8

J'ai une suite de tests qui affiche les résultats des tests dans le format Unité Python Test: http://docs.python.org/library/unittest.htmlBuildbot analyse syntaxique de test unitaire Python résultats

Y at-il un module/plugin Buildbot existant qui peut analyser cette forme?

Exemple:

DigitalReadWrite_02           ... ok 
DigitalReadWrite_03           ... ok 
DigitalReadWrite_04           ... ok 
PWMoutput_02 (PWM=128 50% LOW 49% HIGH)     ... ok 
PWMoutput_03 (PWM=128 50% LOW 49% HIGH)     ... ok 
PWMoutput_04 (PWM=128 50% LOW 49% HIGH)     ... ok 
-------------------------- 
Ran 6 tests in 1.652s 

OK 

J'ai écrit un analyseur personnalisé, mais il est seulement eu les cas de base. Vaut-il la peine de le rendre compréhensif pour tous les formats de test de l'unité Python.

+1

Oui, ça vaut le coup –

+0

C'est un travail pour un coureur de test * tel que 'nose' ou' py.test' de fournir une sortie analysable comme le format XML XUnit. – jfs

Répondre

3

Non, cela n'a aucun sens de développer un analyseur. Vous pouvez obtenir les informations équivalentes des classes du module runner.py.

les deux classes d'envisager d'étendre TextTestRunner et TextTestResult avec votre logique personnalisée (python 2.7). La sortie que vous avez répertoriée est produite par TextTestResult.

Sinon, vous pouvez étendre ne TextTestResult et modifier l'attribut class TextTestRunner.resultclass mise à votre nouveau nom de classe d'extension.

Les données que vous pouvez extraire de TextTestResult et les mettre dans une liste de dictionnaires sont plus grandes ou équivalentes aux données que votre analyseur est capable d'extraire.

Le cadre unittest permet de telles astuces en raison de sa conception flexible. J'espère que cela a été utile.

[EDIT ]

je trouverais la publication de vos résultats obtenus jusqu'à présent (par exemple, comme un code Open Source sur github) potentiellement très utile pour les personnes qui trouvent votre question! Cela étant dit, je doute qu'il soit facile d'améliorer l'analyseur réel au-delà de l'analyse syntaxique de base de l'expression rationnelle.

Si vous souhaitez toujours poursuivre l'analyse syntaxique du texte, vous devrez peut-être énumérer et décrire «toutes les variantes du format de test de l'unité Python» que vous souhaitez couvrir/prendre en charge. Si vous avez la chance de mettre une telle description sous la forme d'une grammaire sans contexte, alors peut-être pourriez-vous en développer un analyseur, qui couvrirait «ces» cas en tant que forme de langage. S'il vous plaît prenez ma parole de prudence: si l'analyse de texte n'est pas couverte par simple regexp'ing et il y a une chance que vous essayez d'analyser un langage irrégulier (contextuel) - très probablement vous le trouveriez extrêmement difficile accomplir.

+0

Serait toujours agréable à savoir pour les personnes qui n'ont pas accès au coureur – trinth

+0

Tout choix entre les expressions rationnelles et la programmation orientée objet est seulement une question de commodité. BTW si vous dites que vous n'avez pas accès ou contrôle sur la classe Runner, c'est-à-dire sur l'organisation de votre environnement de test, l'analyse du texte peut être utile pour les rapports texte. Mais je serais très alerté si c'est effectivement le cas .. si vous n'avez pas un contrôle approprié sur votre flux de travail de test == il pourrait ne pas vous apporter beaucoup de toute façon. –

+0

Je suis d'accord avec vous pratiquement parlant. Mais si quelqu'un est intéressé à faire cela comme un exercice ou pour le plaisir, ils peuvent vouloir une réponse à la question initiale. – trinth