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
---------------------------------------------------------------------- 5 件のテストが 0.002 秒で実行されました
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)... 想定される失敗 testFail(foo.testFoo)... 失敗 testFailWithDocString(foo.testFoo)foo bar ... 失敗 testOk(foo.testFoo)... ok testOkWithDocString(foo.testFoo)foo bar ... ok 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
---------------------------------------------------------------------- 8 件のテストが 0.001 秒で実行されました
FAILED(失敗=2、エラー=1、スキップ=1、想定される失敗=1、予期しない成功=1)
TODO: クラス全体のリファクタリングを検討してください。現在、処理がかなり複雑になっています。
概要
パブリック コンストラクタ | |
---|---|
PythonUnitTestResultParser(
指定された |
|
PythonUnitTestResultParser(
指定された |
パブリック メソッド | |
---|---|
void
|
finalizeParser()
|
boolean
|
isCancelled()
|
void
|
processNewLines(String[] lines)
Python の unittest の出力を処理し、解析結果を報告します。 |
void
|
setFinalizeWhenParsing(boolean shouldFinalize)
|
パブリック コンストラクタ
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 |
|
パブリック メソッド
finalizeParser
public void finalizeParser ()
isCancelled
public boolean isCancelled ()
戻り値 | |
---|---|
boolean |
processNewLines
public void processNewLines (String[] lines)
Python の unittest の出力を処理し、解析結果を報告します。
このメソッドは、MultiLineReceiver
のベースメソッドとは異なり、出力全体を指定して 1 回だけ呼び出す必要があります。
パラメータ | |
---|---|
lines |
String |
setFinalizeWhenParsing
public void setFinalizeWhenParsing (boolean shouldFinalize)
パラメータ | |
---|---|
shouldFinalize |
boolean |