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 行追蹤 線條。單一狀態::= \u201cok\u201d |\u201cERROR\u201d。TimeMetric ::= \u201cRan\u201d 整數 \u201ctests in\u201d float \u201ds\u201d.狀態 ::= \u201cOK\u201d |\u201c 失敗 (錯誤=\u201d \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 次測試

普通

輸出範例 (failed) test_size (test_rangelib.RangeSetTest) ... ERROR

=============================================================== 錯誤:test_size (test_rangelib.RangeSetTest) ---------------------------------------------------------------------- 回溯 (最近 最後呼叫):檔案「test_rangelib.py」和第 129 行,在 test_rangelib 調高 ValueError() ValueError ---------------------------------------------------------------------- 已在 0.001 秒內執行 1 次測試 失敗 (錯誤=1)

數個極端案例 (失敗) 的輸出範例:testError (foo.testFoo) ... ERROR testexpectedFailure (foo.testFoo) ... 預期的失敗測試失敗 (foo.testFoo) ... 失敗 testFailWithDocString (foo.testFoo) foo bar ... FAIL testOk (foo.testFoo) ... 好 testOkWithDocString (foo.testFoo) foo bar ... ok testSkipped (foo.testFoo) ... 略過 'reason 「foo」testUnexpectedSuccess (foo.testFoo) ... 非預期的成功

============================================================== 錯誤:testError (foo.testFoo) ---------------------------------------------------------------------- 追蹤 (最近一次呼叫):在 testError self.assertEqual(2+2, 5/0) 中,檔案「foo.py」,第 11 行 ZeroDivisionError:整數除法或模數為零

============================================================ 失敗:測試失敗:測試失敗 (foo.testFoo) ---------------------------------------------------------------------- 追蹤 (最近一次呼叫):測試失敗:"foo.py",第 8 行,在 testFail self.assertEqual(2+2, 5) 中 AssertionError:4 != 5

============================================================ 失敗: testFailWithDocString (foo.testFoo) foo 長條 ---------------------------------------------------------------------- 回溯 (最近 最後呼叫):在 testFailWithDocString self.assertEqual(2+2, 5) 中上傳檔案「foo.py」,第 31 行 AssertionError:4 != 5

---------------------------------------------------------------------- 0.001 秒內執行了 8 次測試

失敗 (failures=2, errors=1, ignore=1, 預期失敗=1, 非預期的成功數=1)

任務:考慮重構整個類別,目前處理過程相當混亂。

摘要

公用建構函式

PythonUnitTestResultParser(ITestInvocationListener listener, String runName)

建立向指定 ITestInvocationListener 回報的新 PythonUnitTestResultParser

PythonUnitTestResultParser( listeners, String runName)

建立向指定 ITestInvocationListener 回報的新 PythonUnitTestResultParser

PythonUnitTestResultParser( listeners, String runName, includeFilters, excludeFilters)

建立向指定 ITestInvocationListener 回報的新 PythonUnitTestResultParser,並指定「包含」和「排除」篩選器。

公用方法

void finalizeParser()
boolean isCancelled()
void processNewLines(String[] lines)

處理 Python unittest 輸出內容並回報剖析結果。

void setFinalizeWhenParsing(boolean shouldFinalize)

公用建構函式

PythonUnitTestResultParser

public PythonUnitTestResultParser (ITestInvocationListener listener, 
                String runName)

建立向指定 ITestInvocationListener 回報的新 PythonUnitTestResultParser

參數
listener ITestInvocationListener

runName String

PythonUnitTestResultParser

public PythonUnitTestResultParser ( listeners, 
                String runName)

建立向指定 ITestInvocationListener 回報的新 PythonUnitTestResultParser

參數
listeners

runName String

PythonUnitTestResultParser

public PythonUnitTestResultParser ( listeners, 
                String runName, 
                 includeFilters, 
                 excludeFilters)

建立向指定 ITestInvocationListener 回報的新 PythonUnitTestResultParser,並指定「包含」和「排除」篩選器。

參數
listeners

runName String

includeFilters

excludeFilters

公用方法

敲定剖析器

public void finalizeParser ()

已取消

public boolean isCancelled ()

傳回
boolean

程序新行

public void processNewLines (String[] lines)

處理 Python unittest 輸出內容並回報剖析結果。

此方法只需搭配完整輸出內容即可呼叫一次,但與 MultiLineReceiver

參數
lines String

setFinalizeWhenParsing

public void setFinalizeWhenParsing (boolean shouldFinalize)

參數
shouldFinalize boolean