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
確定
輸出範例 (失敗) 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)
TODO:考慮重構整個類別,目前處理方式相當混亂。
摘要
公用建構函式 | |
|---|---|
PythonUnitTestResultParser(
建立新的 |
|
PythonUnitTestResultParser(
建立新的 |
|
公用方法 | |
|---|---|
void
|
finalizeParser()
|
boolean
|
isCancelled()
|
void
|
processNewLines(String[] lines)
處理 Python unittest 輸出內容,並回報剖析結果。 |
void
|
setFinalizeWhenParsing(boolean shouldFinalize)
|
公用建構函式
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 ()
isCancelled
public boolean isCancelled ()
| 傳回 | |
|---|---|
boolean |
|
processNewLines
public void processNewLines (String[] lines)
處理 Python unittest 輸出內容,並回報剖析結果。
與 MultiLineReceiver 中的基本方法不同,這個方法只能呼叫一次,且必須提供完整輸出內容。
| 參數 | |
|---|---|
lines |
String:包含新行的陣列。 |
setFinalizeWhenParsing
public void setFinalizeWhenParsing (boolean shouldFinalize)
| 參數 | |
|---|---|
shouldFinalize |
boolean |