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 (Collection< ITestInvocationListener > listeners, String runName) Создайте новый объект | |
PythonUnitTestResultParser (Collection< ITestInvocationListener > listeners, String runName, Set<String> includeFilters, Set<String> excludeFilters) Создайте новый объект | |
Общедоступные методы | |
|---|---|
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 |