PythonUnitTestResultParser

public class PythonUnitTestResultParser
extends MultiLineReceiver

java.lang.オブジェクト
com.android.ddmlib.MultiLineReceiver
com.android.tradefed.testtype.PythonUnitTestResultParser


Python の Unittest フレームワークで実行されたテストの出力を解釈し、それを一連のITestInvocationListenerの呼び出しに変換します。これらのテストの出力は、次の EBNF 文法に従います。

TestReport ::= TestResult* 行 TimeMetric [FailMessage*] ステータス。 TestResult ::= 文字列 \u201c(\u201cstring\u201d)\u201d \u201c\u2026\u201d 単一ステータス。 FailMessage ::= EqLine \u201cERROR:\u201d string \u201c(\u201cstring\u201d)\u201d 行トレースバック行。シングルステータス ::= \u201cok\u201d | \u201cエラー\u201d。 TimeMetric ::= \u201cRan\u201d 整数 \u201ctests\u201d float \u201ds\u201d。ステータス ::= \u201cOK\u201d | \u201c失敗(エラー=\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

-------------------------------------------------- -------------------- 0.002 秒で 5 つのテストを実行

わかりました

出力例 (失敗) test_size (test_rangelib.RangeSetTest) ... エラー

================================================= ==================== エラー: test_size (test_rangelib.RangeSetTest) ---------------------- ------------------------------------------------ トレースバック (最新の呼び出し 最後): ファイル「test_rangelib.py」、test_rangelib の 129 行目 raise ValueError() ValueError ------------------------- --------------------------------------- 0.001 秒で 1 つのテストを実行しました 失敗しました(エラー=1)

いくつかのエッジ ケース (失敗) を含む出力例: testError (foo.testFoo) ... ERROR testExpectedFailure (foo.testFoo) ... 予想される失敗 testFail (foo.testFoo) ... FAIL testFailWithDocString (foo.testFoo) foo bar 。 .. FAIL testOk (foo.testFoo) ... ok testOkWithDocString (foo.testFoo) foo bar ... ok testSkipped (foo.testFoo) ... 'reason foo' をスキップしました testUnexpectedSuccess (foo.testFoo) ... 予期せぬ成功

================================================= ==================== エラー: testError (foo.testFoo) ---------------------- ------------------------------------------------ トレースバック (最新の呼び出し last): ファイル "foo.py"、11 行目、testError self.assertEqual(2+2, 5/0) ZeroDivisionError: 整数の除算またはゼロによるモジュロ

================================================= ==================== 失敗: 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

-------------------------------------------------- -------------------- 0.001 秒で 8 つのテストを実行

失敗 (失敗 = 2、エラー = 1、スキップ = 1、予期された失敗 = 1、予期しない成功 = 1)

TODO: クラス全体をリファクタリングすることを検討してください。現時点では処理が非常に面倒です。

まとめ

パブリックコンストラクター

PythonUnitTestResultParser ( ITestInvocationListener listener, String runName)

指定されたITestInvocationListenerに報告する新しいPythonUnitTestResultParserを作成します。

PythonUnitTestResultParser ( listeners, String runName) PythonUnitTestResultParser ( listeners, String runName)

指定されたITestInvocationListenerに報告する新しいPythonUnitTestResultParserを作成します。

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

指定された包含フィルターと除外フィルターを使用して、指定されたITestInvocationListenerに報告する新しいPythonUnitTestResultParserを作成します。

パブリックメソッド

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

Python 単体テストの出力を処理し、解析された結果をレポートします。

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 単体テストの出力を処理し、解析された結果をレポートします。

MultiLineReceiverの基本メソッドとは異なり、このメソッドは完全な出力で 1 回だけ呼び出す必要があります。

パラメーター
lines String

setFinalizeWhenParsing

public void setFinalizeWhenParsing (boolean shouldFinalize)

パラメーター
shouldFinalize boolean