PythonUnitTestResultParser

public class PythonUnitTestResultParser
extends MultiLineReceiver

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


解释使用 Python 的单元测试框架运行的测试的输出,并将其转换为对一系列ITestInvocationListener的调用。这些测试的输出遵循以下 EBNF 语法:

TestReport ::= TestResult* Line TimeMetric [FailMessage*] 状态。 TestResult ::= string \u201c(\u201cstring\u201d)\u201d \u201c\u2026\u201d 单一状态。 FailMessage ::= EqLine \u201cERROR:\u201d string \u201c(\u201cstring\u201d)\u201d 线回溯线。单一状态 ::= \u201cok\u201d | \u201c错误\u201d。 TimeMetric ::= \u201cRan\u201d integer \u201ctests in\u201d float \u201ds\u201d。状态 ::= \u201cOK\u201d | \u201cFAILED(错误=\u201d int \u201c)\u201d。回溯 ::= 字符串+。

示例输出(通过): RangeSetTest) ... 好的

---------------------------------------------- ------------------ 在 0.002 秒内运行 5 次测试

好的

示例输出(失败) test_size (test_rangelib.RangeSetTest) ... ERROR

================================================ ==================== 错误:test_size(test_rangelib.RangeSetTest)------------------------ - - - - - - - - - - - - - - - - - - - - - - - - 追溯 (最近一次通话最后一次):文件“test_rangelib.py”,第 129 行,在 test_rangelib 中 raise ValueError() ValueError ------------------------ ------------------------------------------ 在 0.001 秒内进行 1 次测试失败(错误=1)

具有多个边缘情况(失败)的示例输出: testError (foo.testFoo) ... ERROR testExpectedFailure (foo.testFoo) ... 预期失败 testFail (foo.testFoo) ... FAIL testFailWithDocString (foo.testFoo) foo bar 。 .. FAIL testOk (foo.testFoo) ... ok testOkWithDocString (foo.testFoo) foo bar ... ok testSkipped (foo.testFoo) ... 跳过 'reason foo' testUnexpectedSuccess (foo.testFoo) ... 意外成功

================================================ ==================== 错误:testError (foo.testFoo) ---------------------- - - - - - - - - - - - - - - - - - - - - - - - - 追溯 (最近调用 last):文件“foo.py”,第 11 行,在 testError self.assertEqual(2+2, 5/0) ZeroDivisionError: integer division or modulo by zero

================================================ ====================失败:testFail(foo.testFoo)-------------------- - - - - - - - - - - - - - - - - - - - - - - - - 追溯 (最近一次通话最后一次):文件“foo.py”,第 8 行,在 testFail self.assertEqual(2+2, 5) AssertionError: 4 != 5

================================================ ==================== 失败:testFailWithDocString (foo.testFoo) foo bar ---------------------- ----------------------------------------------回溯(最近调用最后):文件“foo.py”,第 31 行,在 testFailWithDocString self.assertEqual(2+2, 5) AssertionError: 4 != 5

---------------------------------------------- ------------------ 在 0.001 秒内运行 8 次测试

失败(失败=2,错误=1,跳过=1,预期失败=1,意外成功=1)

TODO:考虑重构整个类,现在处理起来非常混乱。

概括

公共构造函数

PythonUnitTestResultParser ( ITestInvocationListener listener, String runName)

创建一个新的PythonUnitTestResultParser向给定的ITestInvocationListener报告。

PythonUnitTestResultParser ( listeners, String runName) PythonUnitTestResultParser ( listeners, String runName)

创建一个新的PythonUnitTestResultParser向给定的ITestInvocationListener报告。

PythonUnitTestResultParser ( listeners, String runName, includeFilters, excludeFilters) PythonUnitTestResultParser ( listeners, String runName, includeFilters, excludeFilters) PythonUnitTestResultParser ( listeners, String runName, includeFilters, excludeFilters) PythonUnitTestResultParser ( listeners, String runName, includeFilters, 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 ( listeners, 
                String runName)

创建一个新的PythonUnitTestResultParser向给定的ITestInvocationListener报告。

参数
listeners

runName String

PythonUnitTestResultParser

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

创建一个新的PythonUnitTestResultParser ,它向给定的ITestInvocationListener报告,具有指定的包含和排除过滤器。

参数
listeners

runName String

includeFilters

excludeFilters

公共方法

完成解析器

public void finalizeParser ()

取消

public boolean isCancelled ()

退货
boolean

处理换行

public void processNewLines (String[] lines)

处理 Python 单元测试输出并报告解析结果。

MultiLineReceiver中的基本方法不同,此方法应仅调用一次并提供完整输出。

参数
lines String

setFinalizeWhenParsing

public void setFinalizeWhenParsing (boolean shouldFinalize)

参数
shouldFinalize boolean