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(
Crea un nuovo |
|
PythonUnitTestResultParser(
Crea un nuovo |
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 |