PythonUnitTestResultParser

public class PythonUnitTestResultParser
extends MultiLineReceiver

java.lang.Object
   ↳ com.android.ddmlib.MultiLineReceiver
     ↳ com.android.tradefed.testtype.PythonUnitTestResultParser


Interpreta el resultado de las pruebas que se ejecutan con el framework unittest de Python y lo traduce en llamadas a una serie de ITestInvocationListener. El resultado de estas pruebas sigue esta gramática EBNF:

TestReport ::= TestResult* Line TimeMetric [FailMessage*] Status. TestResult ::= string \u201c(\u201cstring\u201d)\u201d \u201c\u2026\u201d SingleStatus. FailMessage ::= EqLine \u201cERROR:\u201d cadena \u201c(\u201ccadena\u201d)\u201d Línea de seguimiento de línea. SingleStatus ::= \u201cok\u201d | \u201cERROR\u201d. TimeMetric ::= \u201cRan\u201d integer \u201ctests in\u201d float \u201ds\u201d. Estado ::= \u201cOK\u201d | \u201cFAILED (errors=\u201d int \u201c)\u201d. traceback ::= cadena+.

Resultado de ejemplo (aprobado): test_size (test_rangelib.RangeSetTest) … ok test_str (test_rangelib.RangeSetTest) … ok test_subtract (test_rangelib.RangeSetTest) … ok test_to_string_raw (test_rangelib.RangeSetTest) … ok test_union (test_rangelib.RangeSetTest) … ok

---------------------------------------------------------------------- Se ejecutaron 5 pruebas en 0.002 s

Aceptar

Ejemplo de resultado (error) test_size (test_rangelib.RangeSetTest) ... ERROR

====================================================================== ERROR: test_size (test_rangelib.RangeSetTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "test_rangelib.py", line 129, in test_rangelib raise ValueError() ValueError ---------------------------------------------------------------------- Ran 1 test in 0.001s FAILED (errors=1)

Ejemplo de salida con varios casos extremos (errores): testError (foo.testFoo) … ERROR testExpectedFailure (foo.testFoo) … error esperado testFail (foo.testFoo) … ERROR testFailWithDocString (foo.testFoo) foo bar … ERROR testOk (foo.testFoo) … ok testOkWithDocString (foo.testFoo) foo bar … ok testSkipped (foo.testFoo) … omitido “reason foo” testUnexpectedSuccess (foo.testFoo) … éxito inesperado

====================================================================== ERROR: testError (foo.testFoo) ---------------------------------------------------------------------- Traceback (most recent call last): File "foo.py", line 11, in testError self.assertEqual(2+2, 5/0) ZeroDivisionError: integer division or modulo by zero

====================================================================== FAIL: testFail (foo.testFoo) ---------------------------------------------------------------------- Traceback (most recent call last): File "foo.py", line 8, in testFail self.assertEqual(2+2, 5) AssertionError: 4 != 5

====================================================================== FAIL: testFailWithDocString (foo.testFoo) foo bar ---------------------------------------------------------------------- Traceback (most recent call last): File "foo.py", line 31, in testFailWithDocString self.assertEqual(2+2, 5) AssertionError: 4 != 5

---------------------------------------------------------------------- Se ejecutaron 8 pruebas en 0.001 s

FAILED (failures=2, errors=1, skipped=1, expected failures=1, unexpected successes=1)

TODO: Considera refactorizar la clase completa, el control es bastante desordenado en este momento.

Resumen

Constructores públicos

PythonUnitTestResultParser( listeners, String runName)

Crea un PythonUnitTestResultParser nuevo que informe a los ITestInvocationListener dados.

PythonUnitTestResultParser( listeners, String runName, includeFilters, excludeFilters)

Crea un PythonUnitTestResultParser nuevo que informe a los ITestInvocationListener dados, con los filtros de inclusión y exclusión especificados.

Métodos públicos

void finalizeParser()
boolean isCancelled()
void processNewLines(String[] lines)

Procesa el resultado de Python unittest y, luego, informa los resultados analizados.

void setFinalizeWhenParsing(boolean shouldFinalize)

Constructores públicos

PythonUnitTestResultParser

public PythonUnitTestResultParser ( listeners, 
                String runName)

Crea un PythonUnitTestResultParser nuevo que informe a los ITestInvocationListener dados.

Parámetros
listeners

runName String

PythonUnitTestResultParser

public PythonUnitTestResultParser ( listeners, 
                String runName, 
                 includeFilters, 
                 excludeFilters)

Crea un PythonUnitTestResultParser nuevo que informe a los ITestInvocationListener dados, con los filtros de inclusión y exclusión especificados.

Parámetros
listeners

runName String

includeFilters

excludeFilters

Métodos públicos

finalizeParser

public void finalizeParser ()

isCancelled

public boolean isCancelled ()

Muestra
boolean

processNewLines

public void processNewLines (String[] lines)

Procesa el resultado de Python unittest y, luego, informa los resultados analizados.

Se debe llamar a este método solo una vez con el resultado completo, a diferencia del método base en MultiLineReceiver.

Parámetros
lines String

setFinalizeWhenParsing

public void setFinalizeWhenParsing (boolean shouldFinalize)

Parámetros
shouldFinalize boolean