PythonUnitTestResultParser

public class PythonUnitTestResultParser
extends MultiLineReceiver

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


Interpreta a saída de testes executados com o framework unittest do Python e a traduz em chamadas em uma série de ITestInvocationListeners. A saída desses testes segue esta gramática 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+.

Exemplo de saída (aprovação): 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

---------------------------------------------------------------------- Foram executados 5 testes em 0,002 s

OK

Exemplo de saída (falha) 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)

Exemplo de saída com vários casos extremos (falha): 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

====================================================================== FALHA: 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.

Resumo

Construtores públicos

PythonUnitTestResultParser( listeners, String runName)

Crie um novo PythonUnitTestResultParser que gere relatórios para os ITestInvocationListeners especificados.

PythonUnitTestResultParser( listeners, String runName, includeFilters, excludeFilters)

Crie um novo PythonUnitTestResultParser que gere relatórios para os ITestInvocationListeners especificados, com filtros de inclusão e exclusão especificados.

Métodos públicos

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

Processa a saída do unittest do Python e informa os resultados analisados.

void setFinalizeWhenParsing(boolean shouldFinalize)

Construtores públicos

PythonUnitTestResultParser

public PythonUnitTestResultParser ( listeners, 
                String runName)

Crie um novo PythonUnitTestResultParser que gere relatórios para os ITestInvocationListeners especificados.

Parâmetros
listeners

runName String

PythonUnitTestResultParser

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

Crie um novo PythonUnitTestResultParser que gere relatórios para os ITestInvocationListeners especificados, com filtros de inclusão e exclusão especificados.

Parâmetros
listeners

runName String

includeFilters

excludeFilters

Métodos públicos

finalizeParser

public void finalizeParser ()

isCancelled

public boolean isCancelled ()

Retorna
boolean

processNewLines

public void processNewLines (String[] lines)

Processa a saída do unittest do Python e informa os resultados analisados.

Esse método precisa ser chamado apenas uma vez com a saída completa, ao contrário do método básico em MultiLineReceiver.

Parâmetros
lines String: a matriz que contém as novas linhas.

setFinalizeWhenParsing

public void setFinalizeWhenParsing (boolean shouldFinalize)

Parâmetros
shouldFinalize boolean