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( 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 ( 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