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 a 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 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+.

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

---------------------------------------------------------------------- Ran 5 tests in 0.002s

OK

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

Esempio di output con diversi casi limite (non superato): 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)

TODO: Consider refactoring the full class, handling is quite messy right now.

Riepilogo

Costruttori pubblici

PythonUnitTestResultParser(ITestInvocationListener listener, String runName)

Crea un nuovo PythonUnitTestResultParser che genera report per il ITestInvocationListener specificato.

PythonUnitTestResultParser(Collection<ITestInvocationListener> listeners, String runName)

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

PythonUnitTestResultParser(Collection<ITestInvocationListener> listeners, String runName, Set<String> includeFilters, Set<String> excludeFilters)

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

Metodi pubblici

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

Elabora l'output di unittest di Python e segnala i risultati analizzati.

void setFinalizeWhenParsing(boolean shouldFinalize)

Costruttori pubblici

PythonUnitTestResultParser

public PythonUnitTestResultParser (ITestInvocationListener listener, 
                String runName)

Crea un nuovo PythonUnitTestResultParser che genera report per il ITestInvocationListener specificato.

Parametri
listener ITestInvocationListener

runName String

PythonUnitTestResultParser

public PythonUnitTestResultParser (Collection<ITestInvocationListener> listeners, 
                String runName)

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

Parametri
listeners Collection

runName String

PythonUnitTestResultParser

public PythonUnitTestResultParser (Collection<ITestInvocationListener> listeners, 
                String runName, 
                Set<String> includeFilters, 
                Set<String> excludeFilters)

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

Parametri
listeners Collection

runName String

includeFilters Set

excludeFilters Set

Metodi pubblici

finalizeParser

public void finalizeParser ()

isCancelled

public boolean isCancelled ()

Resi
boolean

processNewLines

public void processNewLines (String[] lines)

Elabora l'output di unittest di Python e segnala i 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: l'array contenente le nuove righe.

setFinalizeWhenParsing

public void setFinalizeWhenParsing (boolean shouldFinalize)

Parametri
shouldFinalize boolean