PythonUnitTestResultParser

public class PythonUnitTestResultParser
extends MultiLineReceiver

java.lang.Object
com.android.ddmlib.MultiLineReceiver
com.android.tradefed.testtype.PythonUnitTestResultParser


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

TestReport ::= TestResult* 行 TimeMetric [FailMessage*] ステータス。 TestResult ::= string \u201c(\u201cstring\u201d)\u201d \u201c\u2026\u201d SingleStatus. FailMessage ::= EqLine \u201cERROR:\u201d string \u201c(\u201cstring\u201d)\u201d Line Traceback Line.シングルステータス ::= \u201cok\u201d | \u201cエラー\u201d. TimeMetric ::= \u201cRan\u201d integer \u201ctests in\u201d float \u201ds\u201d.ステータス ::= \u201cOK\u201d | \u201cFAILED (errors=\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 つのテストを実行

OK

出力例 (失敗) test_size (test_rangelib.RangeSetTest) ... ERROR

================================================== ==================== エラー: test_size (test_rangelib.RangeSetTest) ---------------------- ------------------------------------------------ トレースバック (最新の呼び出し last): ファイル "test_rangelib.py"、129 行目、test_rangelib で 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) ... わかりました testOkWithDocString (foo.testFoo) foo バー ... わかりました testSkipped (foo.testFoo) ... スキップされた「理由 foo」 testUnexpectedSuccess (foo.testFoo) ... 予想外の成功

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

================================================== ==================== 失敗: testFail (foo.testFoo) ---------------------- ------------------------------------------------ トレースバック (最新の呼び出し last): ファイル "foo.py"、8 行目、testFail の self.assertEqual(2+2, 5) AssertionError: 4 != 5

================================================== ==================== 失敗: testFailWithDocString (foo.testFoo) foo バー -------------------- --------------------------------------------------トレースバック (最新の呼び出しが最後): ファイル "foo.py"、31 行目、testFailWithDocString self.assertEqual(2+2, 5) の AssertionError: 4 != 5

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

FAILED (失敗 = 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 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

公開メソッド

finalizeParser

public void finalizeParser ()

キャンセルされました

public boolean isCancelled ()

戻り値
boolean

processNewLines

public void processNewLines (String[] lines)

Python unittest の出力を処理し、解析結果を報告します。

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

パラメーター
lines String

setFinalizeWhenParsing

public void setFinalizeWhenParsing (boolean shouldFinalize)

パラメーター
shouldFinalize boolean