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)
建立向指定 |
|
PythonUnitTestResultParser(
建立向指定 |
|
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 |