PythonUnitTestResultParser
public
class
PythonUnitTestResultParser
extends MultiLineReceiver
| java.lang.Object | ||
| ↳ | com.android.ddmlib.MultiLineReceiver | |
| ↳ | com.android.tradefed.testtype.PythonUnitTestResultParser | |
解读使用 Python 的 unittest 框架运行的测试的输出,并将其转换为对一系列 ITestInvocationListener 的调用
。这些测试的输出遵循以下 EBNF
语法:
TestReport ::= TestResult* Line TimeMetric [FailMessage*] Status. TestResult ::= string \u201c(\u201cstring\u201d)\u201d \u201c\u2026\u201d SingleStatus. FailMessage ::= EqLine \u201cERROR:\u201d string \u201c(\u201cstring\u201d)\u201d Line Traceback Line. SingleStatus ::= \u201cok\u201d | \u201cERROR\u201d. TimeMetric ::= \u201cRan\u201d integer \u201ctests in\u201d float \u201ds\u201d. Status ::= \u201cOK\u201d | \u201cFAILED (errors=\u201d int \u201c)\u201d. Traceback ::= 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
---------------------------------------------------------------------- Ran 5 tests in 0.002s
OK
输出示例(失败):test_size (test_rangelib.RangeSetTest) ... ERROR
====================================================================== ERROR: test_size (test_rangelib.RangeSetTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "test_rangelib.py", line 129, in test_rangelib raise ValueError() ValueError ---------------------------------------------------------------------- Ran 1 test in 0.001s FAILED (errors=1)
包含多个极端情况的输出示例(失败):testError (foo.testFoo) ... ERROR testExpectedFailure (foo.testFoo) ... expected failure testFail (foo.testFoo) ... FAIL testFailWithDocString (foo.testFoo) foo bar ... FAIL testOk (foo.testFoo) ... ok testOkWithDocString (foo.testFoo) foo bar ... ok testSkipped (foo.testFoo) ... skipped 'reason foo' testUnexpectedSuccess (foo.testFoo) ... unexpected success
====================================================================== ERROR: testError (foo.testFoo) ---------------------------------------------------------------------- Traceback (most recent call last): File "foo.py", line 11, in testError self.assertEqual(2+2, 5/0) ZeroDivisionError: integer division or modulo by zero
====================================================================== 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
---------------------------------------------------------------------- Ran 8 tests in 0.001s
FAILED (failures=2, errors=1, skipped=1, expected failures=1, unexpected successes=1)
待办事项:考虑重构整个类,现在的处理方式非常混乱。
摘要
公共构造函数 | |
|---|---|
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 unittest 输出并报告解析结果。 |
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 ()
isCancelled
public boolean isCancelled ()
| 返回 | |
|---|---|
boolean |
|
processNewLines
public void processNewLines (String[] lines)
处理 Python unittest 输出并报告解析结果。
与
MultiLineReceiver中的基本方法不同,此方法应仅使用完整输出调用一次。
| 参数 | |
|---|---|
lines |
String:包含新行的数组。 |
setFinalizeWhenParsing
public void setFinalizeWhenParsing (boolean shouldFinalize)
| 参数 | |
|---|---|
shouldFinalize |
boolean |