PythonUnitTestResultParser

public class PythonUnitTestResultParser
extends MultiLineReceiver

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


מפרש את הפלט של בדיקות שמופעלות באמצעות מסגרת unittest של Python ומתרגם אותו לקריאות (calls) בסדרה של 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

---------------------------------------------------------------------- Ran 5 tests in 0.002s

אישור

פלט לדוגמה (נכשל) 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) ... expected failure testFail (foo.testFoo) ... FAIL testFailWithDocString (foo.testFoo) foo bar ... FAIL testOk (foo.testFoo) ... ok testOkWithDocString (foo.testFoo) foo bar ... ok testSkipped (foo.testFoo) ... skipped 'reason foo' testUnexpectedSuccess (foo.testFoo) ... unexpected success

====================================================================== 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) ---------------------------------------------------------------------- Traceback (most recent call last): File "foo.py", line 8, in testFail self.assertEqual(2+2, 5) AssertionError: 4 != 5

====================================================================== FAIL: testFailWithDocString (foo.testFoo) foo bar ---------------------------------------------------------------------- Traceback (most recent call last): File "foo.py", line 31, in testFailWithDocString self.assertEqual(2+2, 5) AssertionError: 4 != 5

---------------------------------------------------------------------- Ran 8 tests in 0.001s

נכשל (failures=2, errors=1, skipped=1, expected failures=1, unexpected successes=1)

TODO: כדאי לשקול לבצע refactoring של המחלקה המלאה, כי הטיפול בה די מבולגן כרגע.

סיכום

Constructors ציבוריים

PythonUnitTestResultParser( listeners, String runName)

יוצרים PythonUnitTestResultParser חדש שמדווח לITestInvocationListeners הנתונים.

PythonUnitTestResultParser( listeners, String runName, includeFilters, excludeFilters)

יוצרים PythonUnitTestResultParser חדש שמדווח לITestInvocationListeners שצוינו, עם מסנני הכללה והחרגה שצוינו.

‫methods ציבוריים

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

עיבוד של פלט Python unittest ודיווח על תוצאות מנותחות.

void setFinalizeWhenParsing(boolean shouldFinalize)

Constructors ציבוריים

PythonUnitTestResultParser

public PythonUnitTestResultParser ( listeners, 
                String runName)

יוצרים PythonUnitTestResultParser חדש שמדווח לITestInvocationListeners הנתונים.

פרמטרים
listeners

runName String

PythonUnitTestResultParser

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

יוצרים PythonUnitTestResultParser חדש שמדווח לITestInvocationListeners שצוינו, עם מסנני הכללה והחרגה.

פרמטרים
listeners

runName String

includeFilters

excludeFilters

‫methods ציבוריים

finalizeParser

public void finalizeParser ()

isCancelled

public boolean isCancelled ()

החזרות
boolean

processNewLines

public void processNewLines (String[] lines)

עיבוד של פלט Python unittest ודיווח על תוצאות מנותחות.

צריך להפעיל את השיטה הזו רק פעם אחת עם הפלט המלא, בניגוד לשיטת הבסיס ב-MultiLineReceiver.

פרמטרים
lines String: המערך שמכיל את השורות החדשות.

setFinalizeWhenParsing

public void setFinalizeWhenParsing (boolean shouldFinalize)

פרמטרים
shouldFinalize boolean