PythonUnitTestResultParser

public class PythonUnitTestResultParser
extends MultiLineReceiver

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


Интерпретирует результаты тестов, запущенных с помощью фреймворка unittest на Python, и преобразует их в вызовы ряда объектов ITestInvocationListener . Результаты этих тестов соответствуют следующей грамматике EBNF:

TestReport ::= TestResult* Line TimeMetric [FailMessage*] Статус. TestResult ::= string \u201c(\u201cstring\u201d)= \u201c\u2026\u201d SingleStatus. FailMessage::= EqLine \u201cERROR:\u201d string \u201c(\u201cstring\u201d) = Line Traceback Line. SingleStatus ::= \u201cok= | \u201cОШИБКА=. TimeMetric ::= \u201cRan\u201d целое число \u201cтесты в\u201d float =s\u201d. Статус ::= \u201cОК= | «ОШИБКА (ошибки=\u201d int \u201c)\u201d. Трассировка стека ::= string+.»

Пример выходных данных (пройдено): 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

---------------------------------------------------------------------- Выполнено 5 тестов за 0,002 с

ХОРОШО

Пример выходных данных (неудачно) test_size (test_rangelib.RangeSetTest) ... ОШИБКА

======================================================================= ОШИБКА: test_size (test_rangelib.RangeSetTest) ---------------------------------------------------------------------- Трассировка стека (самый последний вызов): Файл "test_rangelib.py", строка 129, в test_rangelib raise ValueError() ValueError ---------------------------------------------------------------------- Выполнен 1 тест за 0.001 с. НЕУДАЧНО (ошибок=1)

Пример выходных данных с несколькими крайними случаями (сбой): testError (foo.testFoo) ... ОШИБКА testExpectedFailure (foo.testFoo) ... ожидаемый сбой testFail (foo.testFoo) ... СБОЙ testFailWithDocString (foo.testFoo) foo bar ... СБОЙ testOk (foo.testFoo) ... ok testOkWithDocString (foo.testFoo) foo bar ... ok testSkipped (foo.testFoo) ... пропущена причина foo testUnexpectedSuccess (foo.testFoo) ... неожиданный успех

======================================================================= ОШИБКА: testError (foo.testFoo) ---------------------------------------------------------------------- Трассировка стека (самый последний вызов): Файл "foo.py", строка 11, в testError self.assertEqual(2+2, 5/0) ZeroDivisionError: деление целого числа или по модулю на ноль

======================================================================= 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

---------------------------------------------------------------------- Выполнено 8 тестов за 0,001 с

НЕУДАЧА (сбоев=2, ошибок=1, пропущено=1, ожидаемых сбоев=1, неожиданных успехов=1)

TODO: Рассмотрите возможность рефакторинга всего класса, сейчас обработка довольно запутанная.

Краткое содержание

Государственные строители

PythonUnitTestResultParser ( ITestInvocationListener listener, String runName)

Создайте новый объект PythonUnitTestResultParser , который будет отправлять данные указанному объекту ITestInvocationListener .

PythonUnitTestResultParser (Collection< ITestInvocationListener > listeners, String runName)

Создайте новый объект PythonUnitTestResultParser , который будет отправлять данные указанным объектам ITestInvocationListener .

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

Создайте новый объект PythonUnitTestResultParser , который будет отправлять результаты заданным объектам ITestInvocationListener с указанными фильтрами включения и исключения.

Общедоступные методы

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

Обработать результаты модульных тестов Python и вывести их в виде отчета.

void setFinalizeWhenParsing (boolean shouldFinalize)

Государственные строители

PythonUnitTestResultParser

public PythonUnitTestResultParser (ITestInvocationListener listener, 
                String runName)

Создайте новый объект PythonUnitTestResultParser , который будет отправлять данные указанному объекту ITestInvocationListener .

Параметры
listener ITestInvocationListener

runName String

PythonUnitTestResultParser

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

Создайте новый объект PythonUnitTestResultParser , который будет отправлять данные указанным объектам ITestInvocationListener .

Параметры
listeners Collection

runName String

PythonUnitTestResultParser

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

Создайте новый объект PythonUnitTestResultParser , который будет отправлять результаты заданным объектам ITestInvocationListener с указанными фильтрами включения и исключения.

Параметры
listeners Collection

runName String

includeFilters Set

excludeFilters Set

Общедоступные методы

finalizeParser

public void finalizeParser ()

отменено

public boolean isCancelled ()

Возвраты
boolean

processNewLines

public void processNewLines (String[] lines)

Обработать результаты модульных тестов Python и вывести их в виде отчета.

Этот метод следует вызывать только один раз с полным выводом, в отличие от базового метода в MultiLineReceiver .

Параметры
lines String : Массив, содержащий новые строки.

setFinalizeWhenParsing

public void setFinalizeWhenParsing (boolean shouldFinalize)

Параметры
shouldFinalize boolean