TestNG รายงานการสร้างใน Selenium: จะสร้างได้อย่างไร?

⚡ สรุปอย่างชาญฉลาด

TestNG รายงานจะเป็นไฟล์ผลลัพธ์ HTML ตามค่าเริ่มต้น TestNG หลังจากรันทุกครั้ง จะเขียนข้อมูลลงในโฟลเดอร์ test-output เพื่อแสดงว่ากรณีทดสอบใดผ่าน ล้มเหลว หรือถูกข้ามไป รวมถึงบันทึกต่างๆ ของ Reporter ด้วย

  • 🔘 เอาต์พุตเริ่มต้น: ทุกๆ TestNG คำสั่ง run จะสร้างโฟลเดอร์สำหรับเก็บผลลัพธ์การทดสอบโดยไม่ต้องเขียนโค้ดเพิ่มเติมใดๆ
  • ☑️ สองมุมมอง HTML: ไฟล์ emailable-report.html สรุปผลลัพธ์ ส่วนไฟล์ index.html เชื่อมโยงไปยังรายละเอียดเพิ่มเติม
  • ✅ บันทึกของนักข่าว: Reporter.log() จะเขียนข้อความที่กำหนดเองลงในรายงานที่สร้างขึ้นโดยตรง
  • 🧪 ชุดโปรแกรมประกอบด้วย: การเรียกใช้ testng.xml จะรวมคลาสหลายคลาสเข้าไว้ในรายงานเดียวที่รวมทุกอย่างไว้ด้วยกัน
  • 🛠️ การปรับแต่ง: ITestListener และ IReporter ช่วยให้ทีมสามารถสร้างรูปแบบรายงานของตนเองได้
  • 📊 นอกเหนือจากค่าเริ่มต้น: ExtentReports และ Allure เพิ่มฟังก์ชันแนบแผนภูมิ ประวัติ และภาพหน้าจอ

TestNG การสร้างรายงานใน Selenium

สิ่งที่เป็น TestNG รายงาน?

TestNG รายงาน เป็นรายงาน HTML เริ่มต้นซึ่งสร้างขึ้นเมื่อมีการดำเนินการกรณีทดสอบ TestNG- รายงานเหล่านี้ช่วยให้คุณระบุข้อมูลเกี่ยวกับกรณีทดสอบและสถานะของโครงการ TestNG รายงานใน Selenium บันทึกผลลัพธ์สามอย่างสำหรับวิธีการทดสอบแต่ละวิธี ได้แก่ ผ่าน ไม่ผ่าน และข้าม เพื่อให้คุณสามารถตรวจสอบข้อมูลเกี่ยวกับกรณีทดสอบได้อย่างรวดเร็ว

การสร้างรายงานมีความสำคัญมากเมื่อคุณทำการทดสอบอัตโนมัติและการทดสอบด้วยตนเอง

  • เมื่อดูผลลัพธ์ คุณจะสามารถระบุจำนวนกรณีทดสอบที่ผ่าน ล้มเหลว และข้ามได้อย่างง่ายดาย
  • เมื่อดูรายงานแล้วคุณจะรู้ว่าสถานะของโครงการเป็นอย่างไร

Selenium WebDriver ใช้สำหรับทำให้แอปพลิเคชันเว็บทำงานโดยอัตโนมัติ แต่ไม่ได้สร้างรายงานใดๆ ด้วยตัวเอง

  • การขอ TestNG จะสร้างรายงานเริ่มต้น
  • เมื่อคุณเรียกใช้ไฟล์ testng.xml และรีเฟรชโปรเจ็กต์ คุณจะได้โฟลเดอร์ test-output ซึ่งโฟลเดอร์นั้นจะเก็บผลลัพธ์การรายงานจากการทดสอบ TestNG.
  • คลิกขวาที่ไฟล์ emailable-report.html แล้วเลือกตัวเลือก "เปิดด้วยเว็บเบราว์เซอร์"

หมายเหตุ พฤติกรรมที่อธิบายไว้ในที่นี้ยังคงไม่เปลี่ยนแปลง TestNG 7.x. รุ่นที่วางจำหน่าย TestNG เวอร์ชัน 7.6 ขึ้นไปต้องการ JDK 11 หรือสูงกว่า ดังนั้นโปรเจ็กต์เวอร์ชันเก่าอาจต้องอัปเกรดระดับ JDK ก่อนจึงจะสามารถสร้างรายงานได้

ประเภทของ TestNG รายงานในโฟลเดอร์ผลลัพธ์การทดสอบ

ก่อนที่จะเปิดไฟล์ใดๆ ควรทราบก่อนว่าโฟลเดอร์ test-output นั้นมีอะไรอยู่ข้างในบ้าง TestNG สร้างสิ่งประดิษฐ์หลายชิ้นในทุกครั้งที่ดำเนินการ และแต่ละชิ้นจะตอบคำถามที่แตกต่างกัน

ไฟล์หรือโฟลเดอร์ สิ่งที่มันถืออยู่ เมื่อมันมีประโยชน์
index.html รายงานสรุปการลงจอดที่เชื่อมโยงไปยังผลลัพธ์ กลุ่ม เวลา และมุมมองผลลัพธ์ของผู้รายงาน เจาะลึกรายละเอียดของการวิ่งแต่ละครั้ง
รายงานที่ส่งอีเมลได้.html หน้าเว็บเดียวที่สรุปวิธีการที่ผ่าน วิธีการที่ไม่ผ่าน และวิธีการที่ถูกข้ามไปในแต่ละคลาส การแบ่งปันผลลัพธ์ให้กับผู้ที่ไม่เปิดดูโปรเจ็กต์
testng-results.xml ไฟล์ XML ที่เครื่องอ่านได้ ซึ่งเขียนโดยตัวรายงาน XML ในตัว พร้อมสถานะและระยะเวลาสำหรับแต่ละวิธี การป้อนข้อมูลไปยังแดชบอร์ดหรือตัวแยกวิเคราะห์แบบกำหนดเอง
รายงานของจูนิเตอร์ JUnit-จัดรูปแบบไฟล์ XML ไฟล์ละหนึ่งไฟล์สำหรับคลาสทดสอบแต่ละคลาส ปลั๊กอิน CI ใดๆ ที่อ่านค่า JUnit รูปแบบผลลัพธ์
testng-failed.xml ไฟล์ชุดทดสอบที่สร้างขึ้นจะแสดงเฉพาะเมธอดที่ล้มเหลวเท่านั้น ทำการทดสอบซ้ำเฉพาะส่วนที่ล้มเหลว แทนที่จะทดสอบทั้งชุดโปรแกรม

ไฟล์ HTML สองไฟล์นี้คือไฟล์ที่บทช่วยสอนนี้จะเปิดในลำดับถัดไป ดังนั้นขั้นตอนด้านล่างจึงเริ่มต้นด้วยไฟล์ emailable-report.html

วิธีสร้างรายงานใน Selenium

วิธีที่ 1: emailable-report.html

  1. คลิกที่ตัวเลือก “emailable-report.html”
  2. คลิกที่เว็บเบราว์เซอร์ตัวเลือก

ภาพหน้าจอด้านล่างแสดงการเปิดไฟล์ emailable-report.html จากโฟลเดอร์ test-output

เลือกไฟล์ emailable-report.html ภายใน TestNG โฟลเดอร์เอาต์พุตทดสอบ

รายงานผลออกมาใน TestNG การรายงานจะมีลักษณะดังนี้หากผ่านทั้งสองคลาส:

TestNG รายงานที่ส่งทางอีเมลแสดงผลการสอบผ่านของคลาสทดสอบ DemoA และ DemoB

ลองพิจารณาสถานการณ์ที่คุณตั้งใจล้มเหลวในการทดสอบกรณี เช่น คลาส DemoB จากนั้นแปลงคลาสทั้งสองเป็นไฟล์ชุด testng.xml แล้วรันมัน ผลลัพธ์จะออกมาเป็นดังนี้ กรณีทดสอบที่ล้มเหลว.

นี่คือผลลัพธ์สำหรับคลาส DemoB:

รายงานที่สามารถส่งทางอีเมลได้ ซึ่งเน้นกรณีทดสอบ DemoB ที่จงใจทำให้ล้มเหลว

ในทำนองเดียวกัน ผลลัพธ์สำหรับ Class DemoA จะมีลักษณะดังนี้:

รายงานสรุปที่สามารถส่งทางอีเมลได้สำหรับการสอบผ่านคลาส DemoA

วิธีที่ 2: index.html

  1. คลิกขวาที่ index.html จากไดเร็กทอรีโครงการ
  2. เลือกตัวเลือก เปิดด้วยเว็บเบราว์เซอร์ ผลลัพธ์จะแสดงตามลำดับต่อไปนี้

ภาพหน้าจอด้านล่างแสดงการเปิดไฟล์ index.html จากไดเร็กทอรีของโปรเจ็กต์

การเปิดไฟล์ index.html จากไดเร็กทอรีของโปรเจ็กต์ในเว็บเบราว์เซอร์

ผลลัพธ์จะเป็นดังนี้:

TestNG index.html รายงานหน้า Landing Page ที่แสดงรายการการดูผลลัพธ์

วิธีที่ 3: คลาสผู้รายงาน

พร้อมกับสิ่งเหล่านี้ TestNG วิธีการสร้างรายงาน คุณสามารถใช้ไฟล์ object.properties เพื่อจัดเก็บบันทึกที่ระบบสร้างขึ้นตลอดจนบันทึกที่ผู้ใช้สร้างขึ้น แต่วิธีที่ง่ายที่สุดวิธีหนึ่งในการจัดเก็บข้อมูลบันทึกในการทดสอบคือการใช้ คลาสนักข่าว.

Reporter.เข้าสู่ระบบ Selenium เป็นชั้นเรียนปัจจุบันใน TestNG สำหรับ Selenium การรายงาน มี 4 วิธีในการจัดเก็บข้อมูลบันทึก ได้แก่:

  1. Reporter.log (สตริง s);
  2. Reporter.log (สตริง s, logToStandardOut บูลีน);
  3. Reporter.log (สตริง s, ระดับ int);
  4. Reporter.log (สตริง s, ระดับ int, logToStandardOut บูลีน);

อาร์กิวเมนต์ตัวที่สองจะตัดสินว่าข้อความนั้นจะแสดงทั้งในคอนโซลและในรายงานหรือไม่ และอาร์กิวเมนต์ระดับจะควบคุมระดับความละเอียดของการแสดงข้อความ

ตัวอย่าง:

สร้างคลาสสองคลาสเช่น DemoA และ DemoB และเขียนโค้ดต่อไปนี้ภายในคลาส

สำหรับคลาส DemoA;

  • การขอ Code สำหรับ DemoA นั้นได้อธิบายไว้ข้างต้นแล้ว ตรงนี้คุณกำลังใช้ วิธีการบันทึกของคลาส Reporter (สำหรับการสร้างคลาสรายงานของคุณเอง คลาสดังกล่าวต้องใช้งานอินเทอร์เฟซ org.testng.IReporter)
  • วิธีการบันทึกเป็นวิธีการคงที่ของคลาส Reporter ดังนั้นคุณกำลังเข้าถึงวิธีการนั้นผ่านคลาส Reporter
  • วิธีการบันทึกใช้เพื่อจัดเก็บข้อมูลบันทึกที่เขียนภายในโปรแกรม เมื่อดูข้อมูลบันทึก คุณจะทราบได้อย่างง่ายดายว่าการทำงานของโปรแกรมหยุดอยู่ที่ไหน

ภาพหน้าจอด้านล่างแสดงการเรียกใช้ Reporter.log ที่อยู่ในคลาส DemoA

ข้อความในไฟล์ Reporter.log ที่เขียนขึ้นภายในคลาสทดสอบ DemoA

สำหรับคลาส DemoB:

ข้อความที่เขียนในไฟล์ Reporter.log ภายในคลาสทดสอบ DemoB

  • ตอนนี้สร้างไฟล์ testng.xml โดยเลือกคลาสทั้งสองนี้แล้ว
  • เลือกเรียกใช้เป็นและ
  • คลิกบนการแปลงเพื่อทดสอบ
  • จากนั้นเรียกใช้ไฟล์ testng.xml นี้โดยเลือกเรียกใช้เป็น และเลือกชุด testng
  • จากนั้นรีเฟรชโปรเจ็กต์ให้เปิดโฟลเดอร์ test-output
  1. ในโฟลเดอร์ผลลัพธ์การทดสอบ ให้เปิดไฟล์ emailable-report.html ซึ่งจะมีลักษณะดังนี้:

    รายงานที่สามารถส่งทางอีเมลได้นี้ถูกสร้างขึ้นหลังจากเรียกใช้ชุดทดสอบ testng.xml ของ DemoA และ DemoB

    ในทำนองเดียวกัน คุณจะมีเอาต์พุตสำหรับโปรเจ็กต์ Demo B เช่นกัน

  2. ในโฟลเดอร์ test-output ให้เปิดไฟล์ index.html ไฟล์นั้นจะมีลักษณะดังนี้:

    ไฟล์ index.html เป็นรายงานที่สร้างขึ้นหลังจากรันชุดทดสอบ testng.xml

คลิกที่เอาต์พุตของนักข่าว มันจะเปิดข้อมูลการบันทึกอะไรก็ตามที่เขียนไว้ในวิธีทดสอบ

TestNG มุมมองผลลัพธ์ของรายงานที่แสดงรายการข้อความที่บันทึกโดยวิธีการทดสอบ

คลิกที่ไทม์ส มันจะแสดงให้เห็นว่าต้องใช้เวลานานแค่ไหนในการรันวิธีทดสอบที่มีอยู่ในชั้นเรียน TestNG เครื่องมือการรายงาน

TestNG แสดงเวลาที่ใช้ในการทดสอบแต่ละวิธี

วิธีการปรับแต่ง TestNG รายงานที่สร้างด้วย ITestListener และ IReporter

วิธีการทั้งสามข้างต้นใช้สิ่งใดก็ตาม TestNG โดยค่าเริ่มต้นจะสร้างผลลัพธ์ออกมา เมื่อทีมต้องการรูปแบบที่แตกต่างออกไป ฟิลด์เพิ่มเติม หรือมุมมองความคืบหน้าแบบเรียลไทม์ TestNG แสดงจุดเชื่อมต่อเพิ่มเติมสองจุด แทนที่จะขอให้คุณแก้ไขรายงานเริ่มต้น

  • ITestListener จะได้รับการแจ้งเตือนแบบเรียลไทม์เมื่อการทดสอบแต่ละครั้งเริ่มต้น ผ่าน ล้มเหลว หรือถูกข้ามไป ใช้เมื่อจำเป็นต้องบันทึกข้อมูลในขณะที่เหตุการณ์เกิดขึ้น เช่น การจับภาพหน้าจอเมื่อการทดสอบล้มเหลว
  • ไอรีพอร์ตเตอร์ จะได้รับการแจ้งเตือนเพียงครั้งเดียวหลังจากแต่ละชุดการทำงานเสร็จสิ้น และจะได้รับอ็อบเจ็กต์ที่อธิบายการทำงานทั้งหมด ใช้เมื่อผลลัพธ์เป็นเอกสารที่เสร็จสมบูรณ์ เช่น PDF หรือหน้า HTML ที่กำหนดเอง

ตัวรับฟังที่ส่งผลลัพธ์แต่ละรายการเข้าสู่รายงานผ่านคลาส Reporter จะมีลักษณะดังนี้

import org.testng.ITestListener;
import org.testng.ITestResult;
import org.testng.Reporter;

public class ReportListener implements ITestListener {

    @Override
    public void onTestSuccess(ITestResult result) {
        Reporter.log("PASSED: " + result.getName(), true);
    }

    @Override
    public void onTestFailure(ITestResult result) {
        Reporter.log("FAILED: " + result.getName(), true);
    }

    @Override
    public void onTestSkipped(ITestResult result) {
        Reporter.log("SKIPPED: " + result.getName(), true);
    }
}

การลงทะเบียน Listener ทำได้ในไฟล์ testng.xml เดียวกันกับที่คุณสร้างไว้แล้วสำหรับ DemoA และ DemoB

<suite name="Demo Suite">
  <listeners>
    <listener class-name="ReportListener" />
  </listeners>
  <test name="Demo Test">
    <classes>
      <class name="DemoA" />
      <class name="DemoB" />
    </classes>
  </test>
</suite>

มีตัวเลือกคำสั่งบรรทัดคำสั่งสองตัวที่ควรรู้ไว้ขณะทำการทดลอง -d ตัวเลือกนี้จะเปลี่ยนไดเร็กทอรีที่ใช้บันทึกรายงาน และ -ใช้ตัวรับฟังเริ่มต้นเท็จ ปิดใช้งานตัวรายงานในตัวเพื่อให้มีเพียงตัวฟังของคุณเท่านั้นที่ทำงาน ทั้งสองอย่างนี้มีรายละเอียดอยู่ในเอกสารอย่างเป็นทางการ TestNG การบันทึกและการจัดทำเอกสารผลลัพธ์ซึ่งยังบันทึกคุณสมบัติที่ยอมรับโดยตัวรายงาน XML ในตัวอีกด้วย

ตัวรับฟังจะถูกลงทะเบียนเพียงครั้งเดียว จากนั้นจะนำไปใช้กับทุกคลาสในชุด ซึ่งเป็นเหตุผลว่าทำไมทีมที่ดูแลระบบขนาดใหญ่จึง... การทดสอบอัตโนมัติ โดยทั่วไปแล้วชุดทดสอบมักนิยมใช้วิธีนี้มากกว่าการเพิ่มบรรทัดบันทึกข้อมูลลงในแต่ละเมธอดทดสอบด้วยตนเอง

TestNG รายงานเริ่มต้น เทียบกับ รายงานส่วนขยาย เทียบกับ Allure

รายงานเริ่มต้นนั้นเพียงพอสำหรับชุดรายงานขนาดเล็ก แต่ไม่มีข้อมูลประวัติและแผนภูมิ โดยทั่วไปแล้วจะมีการเพิ่มไลบรารีโอเพนซอร์สสองตัวเข้ามาเมื่อชุดรายงานขยายใหญ่ขึ้น และทั้งสองตัวก็ใช้งานได้กับ... TestNG.

ความสามารถ TestNG ผิดนัด รายงานขอบเขต รายงานจูงใจ
ความพยายามในการตั้งค่า ไม่มี — สร้างขึ้นโดยอัตโนมัติ เพิ่มไลบรารีและเขียนโค้ดสำหรับรายงานผล เพิ่มอะแดปเตอร์ จากนั้นสร้างรายงานจากผลลัพธ์
แผนภูมิและแดชบอร์ด ไม่ มี (ใบกำกับภาษีเต็มรูปแบบ) มี (ใบกำกับภาษีเต็มรูปแบบ)
จอ เฉพาะผ่านมาร์กอัป Reporter.log เท่านั้น API สำหรับแนบไฟล์ในตัว API สำหรับแนบไฟล์ในตัว
ประวัติการเรียกใช้และแนวโน้ม ไม่ ผ่านส่วนประกอบเซิร์ฟเวอร์เสริม ใช่ จากผลลัพธ์ที่บันทึกไว้ก่อนหน้านี้
ความครอบคลุมของกรอบงาน TestNG เพียง Java และ .NET กรอบไม่เชื่อเรื่องพระเจ้า

เริ่มต้นด้วยรายงานเริ่มต้นในขณะที่ชุดรายงานยังมีขนาดเล็ก จากนั้นค่อยขยับไปใช้รายงานที่มีขนาดใหญ่ขึ้น รายงานขอบเขต เมื่อผู้มีส่วนได้ส่วนเสียร้องขอแดชบอร์ดที่อ่านง่าย และเพื่อ รายงานจูงใจ เมื่อประวัติการทดสอบที่ไม่เสถียรระหว่างการสร้างกลายเป็นประเด็นสำคัญ ไม่ว่าคุณจะเลือกแบบใด รายงานมักจะถูกเผยแพร่โดยงานสร้าง ซึ่งได้กล่าวถึงไว้ในหัวข้อนี้แล้ว Jenkins บูรณาการอย่างต่อเนื่อง เกี่ยวกับการสอน

คำถามที่พบบ่อย

โฟลเดอร์จะปรากฏขึ้นหลังจากนั้นเท่านั้น TestNG เมื่อการทำงานเสร็จสิ้น โครงการจะได้รับการรีเฟรชใน IDE โฟลเดอร์ว่างมักหมายความว่าคลาสถูกเรียกใช้งานในโหมดธรรมดา Java เนื่องจากแอปพลิเคชันหรือตัวรับฟังเริ่มต้นถูกปิดใช้งาน จึงไม่มีตัวรายงานใดทำงาน

ใช่. TestNG โดยค่าเริ่มต้นจะเขียนไปยังโฟลเดอร์ test-output หากต้องการเขียนลงไฟล์ ให้ใช้ตัวเลือก -d ในบรรทัดคำสั่ง หรือตั้งค่าโฟลเดอร์เอาต์พุตในการกำหนดค่าการเรียกใช้งาน IDE หรือในการตั้งค่า Maven Surefire ที่ใช้เรียกใช้ชุดทดสอบ

จับภาพภายในเมธอดตัวรับฟังเหตุการณ์ เช่น onTestFailure บันทึกไฟล์ไว้ข้างๆ รายงาน จากนั้นเขียนแท็กภาพ HTML ผ่าน Reporter.log รายงานจะแสดงผลมาร์กอัป ทำให้ภาพปรากฏข้างๆ เมธอดที่ล้มเหลว

TestNG ตัวมันเองไม่ได้ส่งอีเมล โดยปกติแล้ว Teams จะแนบไฟล์ emailable-report.html จากงานสร้าง (build job) เป็นต้น Jenkins ขั้นตอนการส่งอีเมลหลังการสร้าง หรือเพิ่มรูทีนการส่งอีเมลขนาดเล็กภายในระบบ IReporter

โมเดล AI จัดกลุ่มความล้มเหลวตามลำดับชั้น-tracเปรียบเทียบความคล้ายคลึงกัน แยกแยะข้อบกพร่องที่แท้จริงออกจากความล้มเหลวที่เกิดจากสภาพแวดล้อมหรือจังหวะเวลา และจัดลำดับความสำคัญของวิธีการที่ล้มเหลวที่จะตรวจสอบก่อน รายงานที่ต้องส่งทางอีเมลจำนวนมากจะกลายเป็นรายการลำดับความสำคัญที่สั้นลงสำหรับทีม

นักบิน GitHub สามารถสร้างโครงสร้างคลาส Listener, ข้อความใน Reporter.log และรายการใน testng.xml ได้จากข้อความแสดงความคิดเห็นสั้นๆ Revตรวจสอบทุกคำแนะนำ เพราะผู้ฟังที่สร้างขึ้นมักจะพลาดวิธีการใช้งานอินเทอร์เฟซที่ถูกต้อง TestNG คาดหวัง

เมื่อติดตั้ง IRetryAnalyzer แล้ว การลองใหม่แต่ละครั้งจะถูกบันทึกไว้พร้อมกับผลลัพธ์สุดท้าย ดังนั้นรายงานเริ่มต้นจึงแสดงความพยายามทุกครั้ง ทำให้การทดสอบที่ไม่เสถียรอาจปรากฏทั้งความล้มเหลวและการผ่านในรอบเดียวกันได้

ส่งค่า -usedefaultlisteners false ในบรรทัดคำสั่ง หรือตั้งค่า useDefaultListeners เป็น false ในการกำหนดค่า Maven Surefire หรือ Ant เฉพาะรีพอร์เตอร์ที่คุณลงทะเบียนไว้อย่างชัดเจนเท่านั้นที่จะทำงาน ซึ่งจะช่วยลดเวลาในการรันสำหรับชุดทดสอบขนาดใหญ่มาก

สรุปโพสต์นี้ด้วย: