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 a estrutura unittest do Python e a traduz em chamadas em uma série de ITestInvocationListener
s. A saída desses testes segue esta gramática EBNF:
TestReport ::= TestResult* Linha 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 | \u201cERRO\u201d. TimeMetric ::= \u201cRan\u201d inteiro \u201ctestes em\u201d float \u201ds\u201d. Status ::= \u201cOK\u201d | \u201cFAILED (erros=\u201d int \u201c)\u201d. Rastreamento ::= 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
-------------------------------------------------- -------------------- Executei 5 testes em 0,002s
OK
Exemplo de saída (com falha) test_size (test_rangelib.RangeSetTest) ... ERRO
================================================= ==================== ERRO: test_size (test_rangelib.RangeSetTest) ---------------------- ------------------------------------------------ Rastreamento ( última chamada mais recente): Arquivo "test_rangelib.py", linha 129, em test_rangelib raise ValueError() ValueError --------------------------- ------------------------------------------- Executei 1 teste em 0,001s FALHOU (erros=1)
Exemplo de saída com vários casos extremos (com falha): testError (foo.testFoo) ... ERROR testExpectedFailure (foo.testFoo) ... falha esperada testFail (foo.testFoo) ... FAIL testFailWithDocString (foo.testFoo) foo bar . .. FAIL testOk (foo.testFoo) ... ok testOkWithDocString (foo.testFoo) foo bar ... ok testSkipped (foo.testFoo) ... ignorado 'motivo foo' testUnexpectedSuccess (foo.testFoo) ... sucesso inesperado
================================================= ==================== ERRO: testError (foo.testFoo) ---------------------- ------------------------------------------------ Rastreamento ( última chamada mais recente): Arquivo "foo.py", linha 11, em testError self.assertEqual(2+2, 5/0) ZeroDivisionError: divisão inteira ou módulo por zero
================================================= ==================== FALHA: testFail (foo.testFoo) ---------------------- ------------------------------------------------ Rastreamento ( última chamada mais recente): Arquivo "foo.py", linha 8, em testFail self.assertEqual(2+2, 5) AssertionError: 4 != 5
================================================= ==================== FALHA: testFailWithDocString (foo.testFoo) foo bar -------------------- -------------------------------------------------- Traceback (última chamada mais recente): Arquivo "foo.py", linha 31, em testFailWithDocString self.assertEqual(2+2, 5) AssertionError: 4 != 5
-------------------------------------------------- -------------------- Executei 8 testes em 0,001s
FAILED (falhas=2, erros=1, ignorados=1, falhas esperadas=1, sucessos inesperados=1)
TODO: Considere refatorar a classe completa, o manuseio está bastante complicado no momento.
Resumo
Construtores públicos | |
---|---|
PythonUnitTestResultParser ( ITestInvocationListener listener, String runName) Crie um novo | |
PythonUnitTestResultParser ( listeners, String runName) PythonUnitTestResultParser ( listeners, String runName) Crie um novo | |
PythonUnitTestResultParser ( listeners, String runName, includeFilters, excludeFilters) PythonUnitTestResultParser ( listeners, String runName, includeFilters, excludeFilters) PythonUnitTestResultParser ( listeners, String runName, includeFilters, excludeFilters) PythonUnitTestResultParser ( listeners, String runName, includeFilters, excludeFilters) Crie um novo |
Métodos públicos | |
---|---|
void | finalizeParser () |
boolean | isCancelled () |
void | processNewLines (String[] lines) Processe a saída do teste unitário do Python e relate os resultados analisados. |
void | setFinalizeWhenParsing (boolean shouldFinalize) |
Construtores públicos
PythonUnitTestResultParser
public PythonUnitTestResultParser (ITestInvocationListener listener, String runName)
Crie um novo PythonUnitTestResultParser
que se reporte ao ITestInvocationListener
fornecido.
Parâmetros | |
---|---|
listener | ITestInvocationListener |
runName | String |
PythonUnitTestResultParser
public PythonUnitTestResultParser (listeners, String runName)
Crie um novo PythonUnitTestResultParser
que se reporte aos ITestInvocationListener
s fornecidos.
Parâmetros | |
---|---|
listeners | |
runName | String |
PythonUnitTestResultParser
public PythonUnitTestResultParser (listeners, String runName, includeFilters, excludeFilters)
Crie um novo PythonUnitTestResultParser
que reporte aos ITestInvocationListener
s fornecidos, com filtros de inclusão e exclusão especificados.
Parâmetros | |
---|---|
listeners | |
runName | String |
includeFilters | |
excludeFilters |
Métodos públicos
finalizarParser
public void finalizeParser ()
é cancelado
public boolean isCancelled ()
Devoluções | |
---|---|
boolean |
processNewLines
public void processNewLines (String[] lines)
Processe a saída do teste unitário do Python e relate os resultados analisados.
Este método deve ser chamado apenas uma vez com a saída completa, diferentemente do método base em MultiLineReceiver
.
Parâmetros | |
---|---|
lines | String |
setFinalizeWhenParsing
public void setFinalizeWhenParsing (boolean shouldFinalize)
Parâmetros | |
---|---|
shouldFinalize | boolean |