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)\u211d 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. 回溯資訊:::= 字串+。
輸出結果範例 (通過):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) ... 預期失敗 testFail (foo.testFoo) ... 失敗 testFailWithDocString (foo.testFoo) foo bar ... 失敗 testOk (foo.testFoo) ... 成功 testOkWithDocString (foo.testFoo) foo bar ... 成功 testSkipped (foo.testFoo) ... 略過「reason」 foo' testUnexpectedSuccess (foo.testFoo) ... 意外成功
====================================================================== 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
====================================================================== 失敗: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
---------------------------------------------------------------------- Ran 8 tests in 0.001s
失敗 (失敗次數=2、錯誤次數=1、略過次數=1、預期失敗次數=1、非預期成功次數=1)
TODO:考慮重構完整類別,目前的處理方式相當混亂。
摘要
公用建構函式 | |
---|---|
PythonUnitTestResultParser(
建立新的 |
|
PythonUnitTestResultParser(
建立新的 |
公用方法 | |
---|---|
void
|
finalizeParser()
|
boolean
|
isCancelled()
|
void
|
processNewLines(String[] lines)
處理 Python 單元測試輸出內容,並回報剖析結果。 |
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 單元測試輸出內容,並回報剖析結果。
與 MultiLineReceiver
中的基礎方法不同,這個方法應只呼叫一次,且必須提供完整的輸出內容。
參數 | |
---|---|
lines |
String |
setFinalizeWhenParsing
public void setFinalizeWhenParsing (boolean shouldFinalize)
參數 | |
---|---|
shouldFinalize |
boolean |