2010-10-15 16 views
8

que tienen un conjunto de pruebas que las salidas de resultados de la prueba en el formato de ensayo Unidad Python: http://docs.python.org/library/unittest.htmlBuildbot análisis de prueba Unidad Python resultados

¿Hay un módulo Buildbot/plugin existente que puede analizar esta forma?

Ejemplo:

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 

He escrito un analizador personalizado, pero sólo tiene los casos básicos. ¿Vale la pena el esfuerzo para hacerlo integral para todos los gustos del formato de prueba de la unidad de Python.

+1

Sí, lo vale –

+0

Es un trabajo para una prueba * runner * como 'nose' o' py.test' para proporcionar un resultado analizable, como el formato XUnit XML. – jfs

Respuesta

3

No, no tiene sentido desarrollar un analizador. Puede obtener la información equivalente de las clases en el módulo runner.py.

considerar la prolongación de ambas clases TextTestRunner y TextTestResult con cierta lógica de negocio (Python 2.7). El resultado que ha enumerado es producido por TextTestResult.

Alternativamente, puede extenderse sólo TextTestResult y alterar el atributo de clase TextTestRunner.resultclass ajustarlo a su nuevo nombre de la clase de extensión.

Los datos que puede extraer de TextTestResult y poner en una lista de diccionarios son mayores o equivalentes a los datos que su analizador es capaz de extraer.

El marco de prueba unitario permite tales trucos debido a su diseño flexible. Espero que haya sido útil.

[EDITAR]

que iba a encontrar la publicación de sus resultados hasta el momento (por ejemplo, como un código de fuente abierta en github) potencialmente muy útil para las personas que encuentran su pregunta!

Habiendo dicho eso, dudo que sea fácil mejorar el analizador real más allá del análisis básico de expresiones regulares.

Si todavía desea seguir el enfoque de análisis de texto, es posible que necesite enumerar y describir "todos los sabores del formato de prueba de unidad de Python" que desea cubrir/apoyar. Si tiene la suerte de poner esa descripción en forma de gramática libre de contexto, entonces tal vez podría desarrollar un analizador sintáctico, que abarcaría "esos" casos como una forma de lenguaje.

Tenga en cuenta que si el análisis de texto no está cubierto por simple expresión regular y existe la posibilidad de que esté tratando de analizar un lenguaje irregular (sensible al contexto), lo más probable es que le resulte extremadamente difícil cumplir.

+0

Aún sería bueno saber para las personas que no tienen acceso al corredor – trinth

+0

Cualquier elección entre las expresiones regulares y la programación orientada a objetos es solo una cuestión de conveniencia. Por cierto, si dices que no tienes acceso o control sobre la clase Runner, es decir, sobre la organización de tu entorno de prueba, entonces el texto de análisis puede ser bueno para los informes de texto. Pero me alertaría mucho si esto es realmente así ... si no tienes el control adecuado sobre tu flujo de trabajo de prueba == puede que no te traiga mucho de todos modos. –

+0

Estoy de acuerdo contigo prácticamente hablando. Pero en caso de que alguien esté interesado en hacer esto como un ejercicio o por diversión, es posible que quieran una respuesta a la pregunta original. – trinth