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*] Status。TestResult ::= 字符串 \u201c(\u201cstring\u201d)\u201d \u201c\u2026\u201d SingleStatus。FailMessage ::= EqLine \u201cERROR:\u201d string \u201c(\u201cstring\u201d)\u201d 线路回溯 直线。SingleStatus ::= \u201cok\u201d |\u201cERROR\u201d。TimeMetric ::= \u201cRan\u201d 整数 \u201ctests in\u201d 浮点数 \u201ds\u201d。状态 ::= \u201cOK\u201d |\u201cFAILED (errors=\u201d int \u201c)\u201d。回溯 ::= string+。

输出示例(通过):test_size (test_rangelib.RangeSetTest) ... ok test_str (test_rangelib.RangeSetTest) ... ok test_subtract (test_rangelib.RangeSetTest) ... 确定 test_to_string_raw (test_rangelib.RangeSetTest) ... ok test_union (test_rangelib.RangeSetTest) ... 好的

---------------------------------------------------------------------- 在 0.002 秒内进行了 5 次测试

确定

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

===================================================================== 错误:test_size (test_rangelib.RangeSetTest) ---------------------------------------------------------------------- 回溯(最新 调用最后):test_rangelib 中的第 129 行文件“test_rangelib.py”引发 ValueError() ValueError ---------------------------------------------------------------------- 在 0.001 秒内进行了 1 次测试 已失败(错误 1 个)

包含几种极端情况(失败)的示例输出:testError (foo.testFoo) ... ERROR test 预期 Failure (foo.testFoo) ... 预期失败 testFail (foo.testFoo) ... 失败 testFailWithDocString (foo.testFoo) foo bar ... FAIL testOk (foo.testFoo) ... ok testOkWithDocString (foo.testFoo) foo bar ... ok testSkipped (foo.testFoo) ... Skip 'reason foo'testUnexpectedSuccess (foo.testFoo) ... 意外成功

===================================================================== 错误:testError (foo.testFoo) ---------------------------------------------------------------------- 回溯 (最近一次调用的最后一次):testError self.assertEqual(2+2, 5/0) 中的第 11 行文件“foo.py” ZeroDivisionError:整数除法或除以零

===================================================================== FAIL:testFail (foo.testFoo) ---------------------------------------------------------------------- 回溯 (最近一次调用的最后一项):testFail self.assertEqual(2+2, 5) 中的第 8 行文件“foo.py” AssertionError:4 != 5

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

---------------------------------------------------------------------- 在 0.001 秒内进行了 8 次测试

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

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

摘要

公共构造函数

PythonUnitTestResultParser(ITestInvocationListener listener, String runName)

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

PythonUnitTestResultParser( listeners, String runName)

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

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

公共方法

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