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(
יוצרים |
|
PythonUnitTestResultParser(
יוצרים |
|
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 |