PythonUnitTestResultParser

public class PythonUnitTestResultParser
extends MultiLineReceiver

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


Interpreta l'output dei test eseguiti con il framework unittest di Python e lo traduce in chiamate su una serie di ITestInvocationListener. L'output di questi test segue questa grammatica EBNF:

TestReport ::= TestResult* Line TimeMetric [FailMessage*] Status. TestResult ::= string \u201c(\u201cstring\u201d)\u201d \u201c\u2026\u201d SingleStatus. FailMessage ::= EqLine \u201cERROR:\u201d stringa \u201c(\u201cstringa\u201d)\u201d Line Traceback Line. SingleStatus ::= \u201cok\u201d | \u201cERROR\u201d. TimeMetric ::= \u201cTest\u201d di interi \u201ceseguiti\u201d in \u201dfloat\u201d. Stato ::= \u201cOK\u201d | \u201cFAILED (errors=\u201d int \u201c)\u201d. Traceback ::= stringa+.

Esempio di output (superato): 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

---------------------------------------------------------------------- Sono stati eseguiti 5 test in 0,002 secondi

OK

Esempio di output (non riuscito) test_size (test_rangelib.RangeSetTest) ... ERROR

====================================================================== ERRORE: test_size (test_rangelib.RangeSetTest) ---------------------------------------------------------------------- Traceback (chiamata più recente ultima): File "test_rangelib.py", riga 129, in test_rangelib raise ValueError() ValueError ---------------------------------------------------------------------- È stato eseguito 1 test in 0,001 s NON SUPERATO (errori=1)

Esempio di output con diversi casi limite (non riusciti): testError (foo.testFoo) ... ERROR testExpectedFailure (foo.testFoo) ... errore previsto testFail (foo.testFoo) ... NON RIUSCITO testFailWithDocString (foo.testFoo) foo bar ... NON RIUSCITO testOk (foo.testFoo) ... OK testOkWithDocString (foo.testFoo) foo bar ... OK testSkipped (foo.testFoo) ... saltato 'motivo foo' testUnexpectedSuccess (foo.testFoo) ... successo imprevisto

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

====================================================================== TEST NON SUPERATO: testFail (foo.testFoo) ---------------------------------------------------------------------- Traceback (ultima chiamata più recente): File "foo.py", riga 8, in testFail self.assertEqual(2+2, 5) AssertionError: 4 != 5

====================================================================== TEST NON SUPERATO: testFailWithDocString (foo.testFoo) foo bar ---------------------------------------------------------------------- Traceback (chiamata più recente ultima): File "foo.py", riga 31, in testFailWithDocString self.assertEqual(2+2, 5) AssertionError: 4 != 5

---------------------------------------------------------------------- Sono stati eseguiti 8 test in 0,001 secondi

NON RIUSCITO (errori=2, errori=1, saltati=1, errori previsti=1, successi imprevisti=1)

DA FARE: valuta la possibilità di eseguire il refactoring dell'intera classe, perché al momento la gestione è piuttosto disordinata.

Riepilogo

Costruttori pubblici

PythonUnitTestResultParser( listeners, String runName)

Crea un nuovo PythonUnitTestResultParser che genera report per i ITestInvocationListener specificati.

PythonUnitTestResultParser( listeners, String runName, includeFilters, excludeFilters)

Crea un nuovo PythonUnitTestResultParser che genera report per i ITestInvocationListener specificati, con filtri di inclusione ed esclusione specificati.

Metodi pubblici

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

Elabora l'output di unittest di Python e genera un report sui risultati analizzati.

void setFinalizeWhenParsing(boolean shouldFinalize)

Costruttori pubblici

PythonUnitTestResultParser

public PythonUnitTestResultParser ( listeners, 
                String runName)

Crea un nuovo PythonUnitTestResultParser che genera report per i ITestInvocationListener specificati.

Parametri
listeners

runName String

PythonUnitTestResultParser

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

Crea un nuovo PythonUnitTestResultParser che genera report per i ITestInvocationListener specificati, con filtri di inclusione ed esclusione specificati.

Parametri
listeners

runName String

includeFilters

excludeFilters

Metodi pubblici

finalizeParser

public void finalizeParser ()

isCancelled

public boolean isCancelled ()

Ritorni
boolean

processNewLines

public void processNewLines (String[] lines)

Elabora l'output di unittest di Python e genera un report sui risultati analizzati.

Questo metodo deve essere chiamato una sola volta con l'output completo, a differenza del metodo di base in MultiLineReceiver.

Parametri
lines String

setFinalizeWhenParsing

public void setFinalizeWhenParsing (boolean shouldFinalize)

Parametri
shouldFinalize boolean