PythonUnitTestResultParser

public class PythonUnitTestResultParser
extends MultiLineReceiver

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


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

TestReport ::= TestResult* Line TimeMetric [FailMessage*] Status. TestResult ::= string \u201c(\u201cstring\u201d)\u201d \u201c\u2026\u201d SingleStatus. FailMessage ::= EqLine \u201cERROR:\u201d string \u201c(\u201cstring\u201d)\u201d Line Traceback Line. SingleStatus ::= \u201cok\u201d | \u201cERROR\u201d. TimeMetric ::= \u201cRan\u201d integer \u201ctests in\u201d float \u201ds\u201d. Status ::= \u201cOK\u201d | \u201cFAILED (errors=\u201d int \u201c)\u201d. Traceback ::= string+.

Ejemplo de resultado (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 (con errores) test_size (test_rangelib.RangeSetTest) … ERROR

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

Ejemplo de salida con varios casos extremos (fallidos): testError (foo.testFoo) … ERROR testExpectedFailure (foo.testFoo) … expected failure testFail (foo.testFoo) … FAIL testFailWithDocString (foo.testFoo) foo bar … FAIL testOk (foo.testFoo) … ok testOkWithDocString (foo.testFoo) foo bar … ok testSkipped (foo.testFoo) … skipped "reason foo" testUnexpectedSuccess (foo.testFoo) … unexpected success

====================================================================== 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

---------------------------------------------------------------------- Ran 8 tests in 0.001s

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

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

Resumen

Constructores públicos

PythonUnitTestResultParser( listeners, String runName)

Crea un nuevo PythonUnitTestResultParser que genere informes para los ITestInvocationListeners determinados.

PythonUnitTestResultParser( listeners, String runName, includeFilters, excludeFilters)

Crea un objeto PythonUnitTestResultParser nuevo que informa a los objetos ITestInvocationListener determinados, 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 unittest de Python y genera un informe con los resultados analizados.

void setFinalizeWhenParsing(boolean shouldFinalize)

Constructores públicos

PythonUnitTestResultParser

public PythonUnitTestResultParser ( listeners, 
                String runName)

Crea un nuevo PythonUnitTestResultParser que genere informes para los ITestInvocationListeners determinados.

Parámetros
listeners

runName String

PythonUnitTestResultParser

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

Crea un objeto PythonUnitTestResultParser nuevo que informa a los objetos ITestInvocationListener determinados, 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 unittest de Python y genera un informe con los resultados analizados.

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

Parámetros
lines String: Es el array que contiene las líneas nuevas.

setFinalizeWhenParsing

public void setFinalizeWhenParsing (boolean shouldFinalize)

Parámetros
shouldFinalize boolean