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 ::= \u201cทำการทดสอบ\u201dจำนวนเต็ม\u201dใน\u201dจำนวนทศนิยม\u201d\u201d สถานะ ::= \u201cOK\u201d | \u201cFAILED (errors=\u201d int \u201c)\u201d การแสดงผลย้อนกลับ ::= 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) ... 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

====================================================================== FAIL: 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

---------------------------------------------------------------------- ทำการทดสอบ 8 รายการใน 0.001 วินาที

ล้มเหลว (จำนวนครั้งที่ล้มเหลว=2, ข้อผิดพลาด=1, ข้าม=1, จำนวนครั้งที่คาดว่าจะล้มเหลว=1, จำนวนครั้งที่ประสบความสำเร็จโดยไม่คาดคิด=1)

TODO: ลองพิจารณารีแฟกทอริงทั้งคลาส เนื่องจากตอนนี้การจัดการค่อนข้างยุ่งเหยิง

สรุป

ตัวสร้างแบบสาธารณะ

PythonUnitTestResultParser( listeners, String runName)

สร้าง PythonUnitTestResultParser ใหม่ซึ่งรายงานไปยัง ITestInvocationListener ที่ระบุ

PythonUnitTestResultParser( listeners, String runName, includeFilters, excludeFilters)

สร้าง PythonUnitTestResultParser ใหม่ซึ่งรายงานไปยัง ITestInvocationListener ที่ระบุ โดยมีตัวกรองรวมและยกเว้นที่ระบุ

เมธอดสาธารณะ

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

ประมวลผลเอาต์พุต Python unittest และรายงานผลลัพธ์ที่แยกวิเคราะห์

void setFinalizeWhenParsing(boolean shouldFinalize)

ตัวสร้างแบบสาธารณะ

PythonUnitTestResultParser

public PythonUnitTestResultParser ( listeners, 
                String runName)

สร้าง PythonUnitTestResultParser ใหม่ซึ่งรายงานไปยัง ITestInvocationListener ที่ระบุ

พารามิเตอร์
listeners

runName String

PythonUnitTestResultParser

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

สร้าง PythonUnitTestResultParser ใหม่ซึ่งรายงานไปยัง ITestInvocationListener ที่ระบุ โดยมีตัวกรองรวมและยกเว้นที่ระบุ

พารามิเตอร์
listeners

runName String

includeFilters

excludeFilters

เมธอดสาธารณะ

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