PythonUnitTestResultParser

public class PythonUnitTestResultParser
extends MultiLineReceiver

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


Interprète le résultat des tests exécutés avec le framework unittest de Python et le traduit en appels sur une série de ITestInvocationListeners. Le résultat de ces tests suit la grammaire EBNF suivante :

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

Exemple de résultat (réussite) : 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

Exemple de résultat (échec) : 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)

Exemple de résultat avec plusieurs cas extrêmes (échec) : 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)

À FAIRE : Envisager de refactoriser la classe complète. La gestion est actuellement assez désordonnée.

Résumé

Constructeurs publics

PythonUnitTestResultParser(ITestInvocationListener listener, String runName)

Crée un PythonUnitTestResultParser qui génère des rapports pour le ITestInvocationListener donné.

PythonUnitTestResultParser(Collection<ITestInvocationListener> listeners, String runName)

Crée un PythonUnitTestResultParser qui génère des rapports pour les ITestInvocationListener donnés.

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

Crée un PythonUnitTestResultParser qui génère des rapports pour les ITestInvocationListener donnés, avec des filtres d'inclusion et d'exclusion spécifiés.

Méthodes publiques

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

Traite le résultat du test unitaire Python et signale les résultats analysés.

void setFinalizeWhenParsing(boolean shouldFinalize)

Constructeurs publics

PythonUnitTestResultParser

public PythonUnitTestResultParser (ITestInvocationListener listener, 
                String runName)

Crée un PythonUnitTestResultParser qui génère des rapports pour le ITestInvocationListener donné.

Paramètres
listener ITestInvocationListener

runName String

PythonUnitTestResultParser

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

Crée un PythonUnitTestResultParser qui génère des rapports pour les ITestInvocationListener donnés.

Paramètres
listeners Collection

runName String

PythonUnitTestResultParser

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

Crée un PythonUnitTestResultParser qui génère des rapports pour les ITestInvocationListener donnés, avec des filtres d'inclusion et d'exclusion spécifiés.

Paramètres
listeners Collection

runName String

includeFilters Set

excludeFilters Set

Méthodes publiques

finalizeParser

public void finalizeParser ()

isCancelled

public boolean isCancelled ()

Renvoie
boolean

processNewLines

public void processNewLines (String[] lines)

Traite le résultat du test unitaire Python et signale les résultats analysés.

Contrairement à la méthode de base dans MultiLineReceiver, cette méthode ne doit être appelée qu'une seule fois avec le résultat complet.

Paramètres
lines String : tableau contenant les nouvelles lignes.

setFinalizeWhenParsing

public void setFinalizeWhenParsing (boolean shouldFinalize)

Paramètres
shouldFinalize boolean