PythonUnitTestResultParser

public class PythonUnitTestResultParser
extends MultiLineReceiver

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


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

TestReport ::= TestResult* 线路 TimeMetric [FailMessage*] 状态。 TestResult ::= 字符串 \u201c(\u201cstring\u201d)\u201d \u201c\u2026\u201d SingleStatus。 FailMessage ::= EqLine \u201cERROR:\u201d string \u201c(\u201cstring\u201d)\u201d 行回溯行。 SingleStatus ::= \u201cok\u201d | “错误”。 TimeMetric ::= 在浮点数中测试整数。状态 ::= \u201cOK\u201d |失败(错误=int)。回溯 ::= 字符串+。

示例输出(通过): 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.范围设置测试)...好的

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

好的

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

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

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

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

=================================================== ==================== 失败: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