PythonUnitTestResultParser

public class PythonUnitTestResultParser
extends MultiLineReceiver

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


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

אישור

פלט לדוגמה (נכשל) test_size (test_rangelib.RangeSetTest) ... שגיאה

====================================================================== שגיאה: test_size (test_rangelib.RangeSetTest) ---------------------------------------------------------------------- נתיב חזרה (הקריאה האחרונה היא האחרונה): קובץ "test_rangelib.py", שורה 129, ב-test_rangelib raise ValueError()‏ ValueError ---------------------------------------------------------------------- הרצתי בדיקה אחת ב-0.001 שניות נכשל (שגיאות=1)

דוגמה לפלט עם כמה מקרים קיצוניים (נכשל): testError (foo.testFoo) ... שגיאה testExpectedFailure (foo.testFoo) ... כשל צפוי testFail (foo.testFoo) ... כשל testFailWithDocString (foo.testFoo) foo bar ... כשל testOk (foo.testFoo) ... תקין testOkWithDocString (foo.testFoo) foo bar ... תקין testSkipped (foo.testFoo) ... דילוג על 'reason foo' testUnexpectedSuccess (foo.testFoo) ... הצלחה בלתי צפויה

====================================================================== שגיאה: testError (foo.testFoo) ---------------------------------------------------------------------- נתיב חזרה (הקריאה האחרונה מופיעה אחרונה): קובץ "foo.py", שורה 11, ב-testError self.assertEqual(2+2, 5/0) ZeroDivisionError: חלוקת מספר שלם או מודולו ב-0

====================================================================== נכשל: testFail (foo.testFoo) ---------------------------------------------------------------------- נתיב חזרה (הקריאה האחרונה מופיעה אחרונה): קובץ "foo.py", שורה 8, ב-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

---------------------------------------------------------------------- בוצעו 8 בדיקות ב-0.001 שניות

FAILED (failures=2, errors=1, skipped=1, expected failures=1, unexpected successes=1)

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

סיכום

יוצרים ציבוריים

PythonUnitTestResultParser( listeners, String runName)

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

PythonUnitTestResultParser( listeners, String runName, includeFilters, excludeFilters)

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

שיטות ציבוריות

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

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

void setFinalizeWhenParsing(boolean shouldFinalize)

יוצרים ציבוריים

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

שיטות ציבוריות

finalizeParser

public void finalizeParser ()

isCancelled

public boolean isCancelled ()

החזרות
boolean

processNewLines

public void processNewLines (String[] lines)

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

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

פרמטרים
lines String

setFinalizeWhenParsing

public void setFinalizeWhenParsing (boolean shouldFinalize)

פרמטרים
shouldFinalize boolean