PythonUnitTestResultParser

public class PythonUnitTestResultParser
extends MultiLineReceiver

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


Interpréte la sortie des tests exécutés avec le framework unittest de Python et la traduit en appels sur une série de ITestInvocationListeners. La sortie 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 ::= \u201cExécuté\u201d des tests entiers \u201cdans\u201d des nombres à virgule flottante \u201ds\u201d. État ::= \u201cOK\u201d | \u201cÉCHEC (erreurs=\u201d int \u201c)\u201d. Traceback ::= chaîne+.

Exemple de sortie (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

---------------------------------------------------------------------- Exécuté 5 tests en 0,002 s

OK

Exemple de résultat (échoué) test_size (test_rangelib.RangeSetTest) ... ERREUR

====================================================================== 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 sortie avec plusieurs cas particuliers (é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 (call le plus récent en dernier): Fichier "foo.py", ligne 11, dans testError self.assertEqual(2+2, 5/0) ZeroDivisionError: division ou modulo entier par zéro

====================================================================== ÉCHEC: testFail (foo.testFoo) ---------------------------------------------------------------------- Traceback (l'appel le plus récent en dernier): Fichier "foo.py", ligne 8, dans testFail self.assertEqual(2+2, 5) AssertionError: 4 != 5

====================================================================== ÉCHEC : testFailWithDocString (foo.testFoo) foo bar ---------------------------------------------------------------------- Traceback (l'appel le plus récent en dernier): Fichier "foo.py", ligne 31, dans testFailWithDocString self.assertEqual(2+2, 5) AssertionError: 4 != 5

---------------------------------------------------------------------- 8 tests exécutés en 0,001 s

FAILED (échecs=2, erreurs=1, ignorés=1, échecs attendus=1, succès inattendus=1)

À FAIRE: Envisagez de refactoriser la classe complète. La gestion est assez désordonnée pour le moment.

Résumé

Constructeurs publics

PythonUnitTestResultParser( listeners, String runName)

Créez un PythonUnitTestResultParser qui rend compte aux ITestInvocationListener donnés.

PythonUnitTestResultParser( listeners, String runName, includeFilters, excludeFilters)

Créez une PythonUnitTestResultParser qui envoie des rapports aux ITestInvocationListener données, avec des filtres d'inclusion et d'exclusion spécifiés.

Méthodes publiques

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

Traitez la sortie du test unitaire Python et signalez les résultats analysés.

void setFinalizeWhenParsing(boolean shouldFinalize)

Constructeurs publics

PythonUnitTestResultParser

public PythonUnitTestResultParser ( listeners, 
                String runName)

Créez un PythonUnitTestResultParser qui rend compte aux ITestInvocationListener donnés.

Paramètres
listeners

runName String

PythonUnitTestResultParser

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

Créez une PythonUnitTestResultParser qui envoie des rapports aux ITestInvocationListener données, avec des filtres d'inclusion et d'exclusion spécifiés.

Paramètres
listeners

runName String

includeFilters

excludeFilters

Méthodes publiques

finalizeParser

public void finalizeParser ()

isCancelled

public boolean isCancelled ()

Renvoie
boolean

processNewLines

public void processNewLines (String[] lines)

Traitez la sortie du test unitaire Python et signalez les résultats analysés.

Cette méthode ne doit être appelée qu'une seule fois avec la sortie complète, contrairement à la méthode de base dans MultiLineReceiver.

Paramètres
lines String

setFinalizeWhenParsing

public void setFinalizeWhenParsing (boolean shouldFinalize)

Paramètres
shouldFinalize boolean