PythonUnitTestResultParser

public class PythonUnitTestResultParser
extends MultiLineReceiver

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


Interpretiert die Ausgabe von Tests, die mit dem unittest-Framework von Python ausgeführt wurden, und übersetzt sie in Aufrufe für eine Reihe von ITestInvocationListeners. Die Ausgabe dieser Tests folgt dieser EBNF Grammatik:

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

Beispielausgabe (erfolgreich): 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

Beispielausgabe (fehlgeschlagen): 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)

Beispielausgabe mit mehreren Grenzfällen (fehlgeschlagen): 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: Die gesamte Klasse sollte überarbeitet werden, da die aktuelle Verarbeitung recht unübersichtlich ist.

Zusammenfassung

Öffentliche Konstruktoren

PythonUnitTestResultParser(ITestInvocationListener listener, String runName)

Erstellt einen neuen PythonUnitTestResultParser, der die Ergebnisse an den angegebenen ITestInvocationListener meldet.

PythonUnitTestResultParser(Collection<ITestInvocationListener> listeners, String runName)

Erstellt einen neuen PythonUnitTestResultParser, der die Ergebnisse an die angegebenen ITestInvocationListeners meldet.

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

Erstellt einen neuen PythonUnitTestResultParser, der die Ergebnisse an die angegebenen ITestInvocationListeners meldet und die angegebenen Ein- und Ausschlussfilter verwendet.

Öffentliche Methoden

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

Verarbeitet die Ausgabe von Python-Unit-Tests und meldet die geparsten Ergebnisse.

void setFinalizeWhenParsing(boolean shouldFinalize)

Öffentliche Konstruktoren

PythonUnitTestResultParser

public PythonUnitTestResultParser (ITestInvocationListener listener, 
                String runName)

Erstellt einen neuen PythonUnitTestResultParser, der die Ergebnisse an den angegebenen ITestInvocationListener meldet.

Parameter
listener ITestInvocationListener

runName String

PythonUnitTestResultParser

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

Erstellt einen neuen PythonUnitTestResultParser, der die Ergebnisse an die angegebenen ITestInvocationListeners meldet.

Parameter
listeners Collection

runName String

PythonUnitTestResultParser

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

Erstellt einen neuen PythonUnitTestResultParser, der die Ergebnisse an die angegebenen ITestInvocationListeners meldet und die angegebenen Ein- und Ausschlussfilter verwendet.

Parameter
listeners Collection

runName String

includeFilters Set

excludeFilters Set

Öffentliche Methoden

finalizeParser

public void finalizeParser ()

isCancelled

public boolean isCancelled ()

Gibt Folgendes zurück:
boolean

processNewLines

public void processNewLines (String[] lines)

Verarbeitet die Ausgabe von Python-Unit-Tests und meldet die geparsten Ergebnisse.

Im Gegensatz zur Basismethode in MultiLineReceiver sollte diese Methode nur einmal mit der vollständigen Ausgabe aufgerufen werden.

Parameter
lines String: Das Array mit den neuen Zeilen.

setFinalizeWhenParsing

public void setFinalizeWhenParsing (boolean shouldFinalize)

Parameter
shouldFinalize boolean