TestNG รายงานการสร้างใน Selenium: จะสร้างได้อย่างไร?
⚡ สรุปอย่างชาญฉลาด
TestNG รายงานจะเป็นไฟล์ผลลัพธ์ HTML ตามค่าเริ่มต้น TestNG หลังจากรันทุกครั้ง จะเขียนข้อมูลลงในโฟลเดอร์ test-output เพื่อแสดงว่ากรณีทดสอบใดผ่าน ล้มเหลว หรือถูกข้ามไป รวมถึงบันทึกต่างๆ ของ Reporter ด้วย
สิ่งที่เป็น 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
- คลิกที่ตัวเลือก “emailable-report.html”
- คลิกที่เว็บเบราว์เซอร์ตัวเลือก
ภาพหน้าจอด้านล่างแสดงการเปิดไฟล์ emailable-report.html จากโฟลเดอร์ test-output
รายงานผลออกมาใน TestNG การรายงานจะมีลักษณะดังนี้หากผ่านทั้งสองคลาส:
ลองพิจารณาสถานการณ์ที่คุณตั้งใจล้มเหลวในการทดสอบกรณี เช่น คลาส DemoB จากนั้นแปลงคลาสทั้งสองเป็นไฟล์ชุด testng.xml แล้วรันมัน ผลลัพธ์จะออกมาเป็นดังนี้ กรณีทดสอบที่ล้มเหลว.
นี่คือผลลัพธ์สำหรับคลาส DemoB:
ในทำนองเดียวกัน ผลลัพธ์สำหรับ Class DemoA จะมีลักษณะดังนี้:
วิธีที่ 2: index.html
- คลิกขวาที่ index.html จากไดเร็กทอรีโครงการ
- เลือกตัวเลือก เปิดด้วยเว็บเบราว์เซอร์ ผลลัพธ์จะแสดงตามลำดับต่อไปนี้
ภาพหน้าจอด้านล่างแสดงการเปิดไฟล์ index.html จากไดเร็กทอรีของโปรเจ็กต์
ผลลัพธ์จะเป็นดังนี้:
วิธีที่ 3: คลาสผู้รายงาน
พร้อมกับสิ่งเหล่านี้ TestNG วิธีการสร้างรายงาน คุณสามารถใช้ไฟล์ object.properties เพื่อจัดเก็บบันทึกที่ระบบสร้างขึ้นตลอดจนบันทึกที่ผู้ใช้สร้างขึ้น แต่วิธีที่ง่ายที่สุดวิธีหนึ่งในการจัดเก็บข้อมูลบันทึกในการทดสอบคือการใช้ คลาสนักข่าว.
Reporter.เข้าสู่ระบบ Selenium เป็นชั้นเรียนปัจจุบันใน TestNG สำหรับ Selenium การรายงาน มี 4 วิธีในการจัดเก็บข้อมูลบันทึก ได้แก่:
- Reporter.log (สตริง s);
- Reporter.log (สตริง s, logToStandardOut บูลีน);
- Reporter.log (สตริง s, ระดับ int);
- Reporter.log (สตริง s, ระดับ int, logToStandardOut บูลีน);
อาร์กิวเมนต์ตัวที่สองจะตัดสินว่าข้อความนั้นจะแสดงทั้งในคอนโซลและในรายงานหรือไม่ และอาร์กิวเมนต์ระดับจะควบคุมระดับความละเอียดของการแสดงข้อความ
ตัวอย่าง:
สร้างคลาสสองคลาสเช่น DemoA และ DemoB และเขียนโค้ดต่อไปนี้ภายในคลาส
สำหรับคลาส DemoA;
- การขอ Code สำหรับ DemoA นั้นได้อธิบายไว้ข้างต้นแล้ว ตรงนี้คุณกำลังใช้ วิธีการบันทึกของคลาส Reporter (สำหรับการสร้างคลาสรายงานของคุณเอง คลาสดังกล่าวต้องใช้งานอินเทอร์เฟซ org.testng.IReporter)
- วิธีการบันทึกเป็นวิธีการคงที่ของคลาส Reporter ดังนั้นคุณกำลังเข้าถึงวิธีการนั้นผ่านคลาส Reporter
- วิธีการบันทึกใช้เพื่อจัดเก็บข้อมูลบันทึกที่เขียนภายในโปรแกรม เมื่อดูข้อมูลบันทึก คุณจะทราบได้อย่างง่ายดายว่าการทำงานของโปรแกรมหยุดอยู่ที่ไหน
ภาพหน้าจอด้านล่างแสดงการเรียกใช้ Reporter.log ที่อยู่ในคลาส DemoA
สำหรับคลาส DemoB:
- ตอนนี้สร้างไฟล์ testng.xml โดยเลือกคลาสทั้งสองนี้แล้ว
- เลือกเรียกใช้เป็นและ
- คลิกบนการแปลงเพื่อทดสอบ
- จากนั้นเรียกใช้ไฟล์ testng.xml นี้โดยเลือกเรียกใช้เป็น และเลือกชุด testng
- จากนั้นรีเฟรชโปรเจ็กต์ให้เปิดโฟลเดอร์ test-output
- ในโฟลเดอร์ผลลัพธ์การทดสอบ ให้เปิดไฟล์ emailable-report.html ซึ่งจะมีลักษณะดังนี้:
ในทำนองเดียวกัน คุณจะมีเอาต์พุตสำหรับโปรเจ็กต์ Demo B เช่นกัน
- ในโฟลเดอร์ test-output ให้เปิดไฟล์ index.html ไฟล์นั้นจะมีลักษณะดังนี้:
คลิกที่เอาต์พุตของนักข่าว มันจะเปิดข้อมูลการบันทึกอะไรก็ตามที่เขียนไว้ในวิธีทดสอบ
คลิกที่ไทม์ส มันจะแสดงให้เห็นว่าต้องใช้เวลานานแค่ไหนในการรันวิธีทดสอบที่มีอยู่ในชั้นเรียน 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 บูรณาการอย่างต่อเนื่อง เกี่ยวกับการสอน












