TestNG Tạo báo cáo trong Selenium: Làm thế nào để tạo ra?

⚡ Tóm tắt thông minh

TestNG Báo cáo là các tệp kết quả HTML mặc định mà TestNG Sau mỗi lần chạy, chương trình sẽ ghi vào thư mục test-output, hiển thị các trường hợp kiểm thử nào đã vượt qua, thất bại hoặc bị bỏ qua, cùng với bất kỳ nhật ký nào của Reporter.

  • 🔘 Kết quả mặc định: Mỗi TestNG Lệnh `run` tạo thư mục `test-output` mà không cần thêm bất kỳ đoạn mã nào.
  • ☑️ Hai khung nhìn HTML: Emailable-report.html tóm tắt kết quả, index.html liên kết đến các chế độ xem chi tiết.
  • Nhật ký của phóng viên: Reporter.log() ghi các thông báo tùy chỉnh trực tiếp vào báo cáo được tạo ra.
  • 🧪 Bộ phần mềm bao gồm: Việc chạy tập tin testng.xml sẽ nhóm nhiều lớp lại thành một báo cáo tổng hợp duy nhất.
  • 🛠️ Tùy chỉnh: ITestListener và IReporter cho phép nhóm xây dựng định dạng báo cáo riêng của họ.
  • 📊 Ngoài các thiết lập mặc định: ExtentReports và Allure bổ sung thêm biểu đồ, lịch sử và tệp đính kèm ảnh chụp màn hình.

TestNG tạo báo cáo trong Selenium

Những gì đang có TestNG Báo cáo?

TestNG Báo Cáo là các báo cáo HTML mặc định được tạo sau khi các trường hợp thử nghiệm được thực thi bằng cách sử dụng TestNG. Những báo cáo này giúp bạn xác định thông tin về các trường hợp thử nghiệm và trạng thái của dự án. TestNG báo cáo trong Selenium Ghi lại ba kết quả cho mỗi phương pháp kiểm thử — đạt, không đạt và bỏ qua — để bạn có thể kiểm tra dữ liệu về các trường hợp kiểm thử một cách nhanh chóng.

Việc tạo báo cáo rất quan trọng khi bạn thực hiện Kiểm tra tự động cũng như Kiểm tra thủ công.

  • Bằng cách nhìn vào kết quả, bạn có thể dễ dàng xác định có bao nhiêu trường hợp kiểm thử đạt, không thành công và bị bỏ qua.
  • Bằng cách nhìn vào báo cáo, bạn sẽ biết được tình trạng của dự án.

Selenium WebDriver được sử dụng để tự động hóa ứng dụng web, nhưng nó không tự tạo ra bất kỳ báo cáo nào.

  • TestNG sẽ tạo ra báo cáo mặc định.
  • Khi bạn chạy tệp testng.xml và làm mới dự án, bạn sẽ nhận được một thư mục test-output, và thư mục đó chứa kết quả báo cáo từ quá trình chạy tệp. TestNG.
  • Nhấp chuột phải vào tệp emailable-report.html và chọn tùy chọn "Mở bằng trình duyệt web".

Lưu ý: Hành vi được mô tả ở đây không thay đổi trong TestNG 7.x. Các bản phát hành từ TestNG Từ phiên bản 7.6 trở đi, JDK yêu cầu phiên bản 11 trở lên, vì vậy các dự án cũ hơn có thể cần nâng cấp phiên bản JDK trước khi báo cáo được tạo ra.

các loại TestNG Báo cáo trong thư mục kết quả kiểm tra

Trước khi mở bất kỳ tập tin nào, việc biết thư mục test-output thực sự chứa những gì sẽ rất hữu ích. TestNG Chương trình tạo ra một số hiện vật trong mỗi lần chạy, và mỗi hiện vật trả lời một câu hỏi khác nhau.

Tệp hoặc thư mục Nó chứa đựng điều gì? Khi nó hữu ích
index.html Báo cáo đích liên kết đến các chế độ xem kết quả, nhóm, thời gian và đầu ra của người báo cáo. Phân tích chi tiết một lượt chạy.
emailable-report.html Một trang duy nhất tóm tắt các phương thức đã thực hiện thành công, thất bại và bị bỏ qua cho mỗi lớp. Chia sẻ kết quả với những người không tham gia vào dự án.
testng-results.xml Dữ liệu XML có thể đọc được bằng máy tính, được tạo bởi trình báo cáo XML tích hợp sẵn, bao gồm trạng thái và thời lượng cho từng phương pháp. Cung cấp dữ liệu cho bảng điều khiển hoặc trình phân tích cú pháp tùy chỉnh.
junitreports JUnit- Định dạng các tệp XML, mỗi tệp dành cho một lớp kiểm thử. Bất kỳ plugin CI nào đọc JUnit Định dạng kết quả.
testng-failed.xml Một tập tin báo lỗi được tạo ra, chỉ liệt kê các phương thức bị lỗi. Chỉ chạy lại những lỗi thay vì toàn bộ bộ kiểm thử.

Hai tệp HTML này là những tệp mà hướng dẫn này sẽ mở tiếp theo, vì vậy hướng dẫn bên dưới bắt đầu với emailable-report.html.

Cách tạo báo cáo trong Selenium

Phương pháp 1: emailable-report.html

  1. Nhấp vào tùy chọn “emailable-report.html”
  2. Bấm vào tùy chọn trình duyệt web

Ảnh chụp màn hình bên dưới cho thấy tệp emailable-report.html đang được mở từ thư mục test-output.

Chọn emailable-report.html bên trong TestNG thư mục đầu ra thử nghiệm

Các báo cáo đầu ra trong TestNG báo cáo sẽ trông như dưới đây nếu cả hai lớp đều được thông qua:

TestNG Báo cáo có thể gửi qua email hiển thị các lớp học thử nghiệm DemoA và DemoB đã vượt qua.

Hãy xem xét tình huống trong đó bạn cố tình thất bại trong trường hợp thử nghiệm, tức là lớp DemoB. Sau đó chuyển đổi cả hai lớp thành tệp bộ testng.xml và chạy nó. Sau đó, kết quả sẽ như thế này. Nó sẽ hiển thị trường hợp thử nghiệm thất bại.

Đây là kết quả của lớp DemoB:

Báo cáo dạng email nêu bật trường hợp thử nghiệm DemoB cố tình thất bại.

Tương tự, kết quả của Class DemoA sẽ như thế này:

Dòng tóm tắt báo cáo có thể gửi qua email cho lớp DemoA đã đạt yêu cầu

Phương pháp-2: index.html

  1. Nhấp chuột phải vào index.html từ thư mục dự án.
  2. Chọn tùy chọn mở bằng trình duyệt web. Nó sẽ hiển thị kết quả theo thứ tự sau.

Ảnh chụp màn hình bên dưới cho thấy tệp index.html được mở từ thư mục dự án.

Mở tệp index.html từ thư mục dự án trong trình duyệt web.

Kết quả sẽ như thế này:

TestNG Trang báo cáo index.html hiển thị kết quả chạy.

Phương pháp-3: Lớp phóng viên

Cùng với những TestNG các phương thức tạo báo cáo, bạn có thể sử dụng tệp object.properties để lưu trữ nhật ký do hệ thống tạo cũng như nhật ký do người dùng tạo. Nhưng một trong những cách đơn giản nhất để lưu trữ thông tin nhật ký trong quá trình kiểm tra là sử dụng Lớp phóng viên.

Phóng viên.đăng nhập Selenium là một lớp có mặt trong TestNG cho Selenium Báo cáo. Nó cung cấp 4 phương pháp khác nhau để lưu trữ thông tin nhật ký, đó là:

  1. Reporter.log(Chuỗi s);
  2. Reporter.log(Chuỗi s, Boolean logToStandardOut);
  3. Reporter.log(Chuỗi s, cấp int);
  4. Reporter.log(Chuỗi s, mức int, Boolean logToStandardOut);

Tham số thứ hai quyết định xem thông báo có được hiển thị trên bảng điều khiển cũng như trong báo cáo hay không, và tham số level kiểm soát mức độ chi tiết của thông báo.

Ví dụ:

Tạo hai lớp như DemoA và DemoB và viết đoạn mã sau vào bên trong các lớp đó.

Đối với Lớp DemoA;

  • Code Đối với DemoA đã được giải thích ở trên. Ở đây bạn đang sử dụng log của lớp Reporter. (Để triển khai một lớp báo cáo riêng, lớp đó phải triển khai giao diện org.testng.IReporter.)
  • Phương thức log là một phương thức tĩnh của lớp Reporter. Vậy là bạn đang truy cập phương thức đó thông qua lớp Reporter.
  • Phương thức log được sử dụng để lưu trữ thông tin log được ghi bên trong chương trình. Bằng cách xem thông tin nhật ký, bạn sẽ dễ dàng biết chính xác nơi dừng thực hiện chương trình.

Ảnh chụp màn hình bên dưới hiển thị các lệnh gọi Reporter.log được thực hiện bên trong lớp DemoA.

Các câu lệnh trong tệp Reporter.log được viết bên trong lớp kiểm thử DemoA.

Đối với lớp DemoB:

Các câu lệnh trong tệp Reporter.log được viết bên trong lớp kiểm thử DemoB.

  • Bây giờ, hãy tạo tệp testng.xml bằng cách chọn hai lớp này và
  • Chọn chạy dưới dạng và
  • Bấm vào chuyển đổi sang testng.
  • Sau đó chạy file testng.xml này bằng cách chọn run as và chọn testng suite.
  • Sau đó làm mới dự án, mở thư mục đầu ra thử nghiệm.
  1. Trong thư mục test-output, hãy mở emailable-report.html. Nó sẽ trông như thế này:

    Báo cáo có thể gửi qua email được tạo ra sau khi chạy bộ kiểm thử DemoA và DemoB testng.xml.

    Tương tự, bạn cũng sẽ có một Đầu ra cho dự án Demo B.

  2. Trong thư mục test-output, hãy mở tệp index.html. Nội dung sẽ trông như sau:

    Báo cáo index.html được tạo ra sau khi chạy bộ kiểm thử testng.xml.

Bấm vào đầu ra của phóng viên. Nó sẽ mở thông tin ghi nhật ký bất cứ điều gì được viết trong phương pháp thử nghiệm.

TestNG Hiển thị kết quả đầu ra của trình báo cáo liệt kê các thông báo được ghi lại bởi các phương thức kiểm thử.

Bấm vào Thời báo. Nó sẽ hiển thị mất bao nhiêu thời gian để chạy phương thức thử nghiệm có trong lớp bằng cách sử dụng TestNG công cụ báo cáo.

TestNG Hiển thị thời gian cho thấy mỗi phương pháp thử nghiệm mất bao lâu để thực hiện.

Làm thế nào để tùy chỉnh TestNG Báo cáo với ITestListener và IReporter

Ba phương pháp trên đều sử dụng bất cứ thứ gì TestNG Theo mặc định, nó sẽ tạo ra giao diện này. Khi một nhóm cần bố cục khác, các trường bổ sung hoặc chế độ xem tiến độ trực tiếp, TestNG Nó cung cấp hai điểm mở rộng thay vì yêu cầu bạn vá báo cáo mặc định.

  • ITestListener Bạn sẽ nhận được thông báo theo thời gian thực, khi mỗi bài kiểm tra bắt đầu, thành công, thất bại hoặc bị bỏ qua. Hãy sử dụng chức năng này khi cần thu thập thông tin ngay tại thời điểm sự kiện xảy ra — ví dụ như ảnh chụp màn hình khi xảy ra lỗi.
  • phóng viên Thông báo được gửi một lần, sau khi mỗi bộ kiểm thử hoàn tất, và nhận được các đối tượng mô tả toàn bộ quá trình chạy. Hãy sử dụng nó khi đầu ra là một tài liệu hoàn chỉnh, chẳng hạn như PDF hoặc trang HTML tùy chỉnh.

Một trình lắng nghe đẩy từng kết quả vào báo cáo thông qua lớp Reporter trông như thế này.

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);
    }
}

Việc đăng ký trình lắng nghe được thực hiện trong cùng tệp testng.xml mà bạn đã tạo cho DemoA và 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>

Có hai tùy chọn dòng lệnh mà bạn nên biết trong quá trình thử nghiệm. -d Tùy chọn này thay đổi thư mục lưu trữ báo cáo, và -usedefaultlisteners false Tắt các trình báo cáo tích hợp sẵn để chỉ trình lắng nghe của riêng bạn hoạt động. Cả hai đều được mô tả trong tài liệu chính thức. TestNG ghi nhật ký và tài liệu kết quảĐiều này cũng ghi lại các thuộc tính được chấp nhận bởi trình báo cáo XML tích hợp sẵn.

Một trình lắng nghe được đăng ký một lần và sau đó áp dụng cho mọi lớp trong bộ ứng dụng, đó là lý do tại sao các nhóm vận hành quy mô lớn lại sử dụng hệ thống này. kiểm tra tự động hóa Các bộ kiểm thử thường thích sử dụng phương pháp này hơn là thêm thủ công các dòng ghi nhật ký vào từng phương thức kiểm thử.

TestNG Báo cáo mặc định so với ExtentReports so với Allure

Các báo cáo mặc định đủ dùng cho một bộ ứng dụng nhỏ, nhưng chúng không có lịch sử và không có biểu đồ. Hai thư viện mã nguồn mở thường được bổ sung khi bộ ứng dụng phát triển, và cả hai đều hoạt động với... TestNG.

Khả Năng TestNG mặc định Mức độ báo cáo Báo cáo quyến rũ
Nỗ lực thiết lập Không có — được tạo tự động Thêm thư viện và viết mã báo cáo. Thêm bộ chuyển đổi, sau đó tạo báo cáo từ kết quả.
Biểu đồ và bảng thông tin Không
Ảnh chụp màn hình Chỉ thông qua đánh dấu Reporter.log API đính kèm tích hợp sẵn API đính kèm tích hợp sẵn
Lịch sử và xu hướng chạy Không Thông qua thành phần máy chủ tùy chọn Vâng, từ các kết quả đã lưu trước đó.
Phạm vi khung TestNG có thể Java và .NET Khung bất khả tri

Hãy bắt đầu với các báo cáo mặc định khi bộ báo cáo còn nhỏ. Sau đó chuyển sang... Mức độ báo cáo khi các bên liên quan yêu cầu bảng điều khiển dễ đọc, và để Báo cáo quyến rũ Khi lịch sử kiểm thử không ổn định trên các bản dựng trở thành vấn đề quan trọng. Cho dù bạn chọn phương pháp nào, báo cáo thường được công bố bởi công việc xây dựng, điều này đã được đề cập trong phần... Jenkins tích hợp liên tục hướng dẫn.

Câu Hỏi Thường Gặp

Thư mục chỉ xuất hiện sau khi TestNG Quá trình chạy hoàn tất và dự án được làm mới trong IDE. Một thư mục trống thường có nghĩa là lớp được khởi chạy như một chương trình thông thường. Java Ứng dụng hoặc các trình lắng nghe mặc định đã bị tắt, do đó không có trình báo cáo nào được chạy.

Vâng. TestNG Theo mặc định, tập lệnh sẽ ghi vào thư mục test-output. Hãy truyền tùy chọn -d trên dòng lệnh, hoặc thiết lập thư mục đầu ra trong cấu hình chạy IDE hoặc trong cài đặt Maven Surefire khi khởi chạy bộ kiểm thử.

Chụp ảnh bên trong phương thức lắng nghe sự cố, ví dụ như onTestFailure, lưu tệp bên cạnh báo cáo, sau đó ghi thẻ hình ảnh HTML thông qua Reporter.log. Báo cáo sẽ hiển thị mã đánh dấu, do đó hình ảnh sẽ xuất hiện bên cạnh phương thức bị lỗi.

TestNG Bản thân nó không gửi thư. Thông thường, các nhóm sẽ đính kèm tệp emailable-report.html từ một tác vụ xây dựng, ví dụ như... Jenkins Bước gửi email sau khi biên dịch, hoặc thêm một quy trình gửi email nhỏ bên trong phần triển khai IReporter.

Các mô hình AI nhóm các lỗi theo thứ tự ngăn xếp.tracTính tương đồng, phân biệt các lỗi thực sự với các lỗi do môi trường hoặc thời gian, và xếp hạng các phương pháp gây lỗi cần kiểm tra trước. Một danh sách báo cáo dài cần gửi qua email sẽ trở thành một hàng đợi ưu tiên ngắn gọn cho nhóm.

Trợ lý GitHub Có thể tạo cấu trúc tự động cho các lớp trình lắng nghe, các câu lệnh Reporter.log và các mục testng.xml từ một đoạn bình luận ngắn. RevHãy xem xét mọi đề xuất, vì các trình lắng nghe được tạo tự động thường bỏ sót các phương thức giao diện chính xác. TestNG mong đợi.

Khi IRetryAnalyzer được gắn vào, mỗi lần thử lại sẽ được ghi lại cùng với kết quả cuối cùng. Do đó, báo cáo mặc định hiển thị mọi lần thử, vì vậy một bài kiểm tra không ổn định có thể xuất hiện cả dưới dạng thất bại và thành công trong cùng một lần chạy.

Truyền tham số -usedefaultlisteners false trên dòng lệnh, hoặc đặt useDefaultListeners thành false trong cấu hình Maven Surefire hoặc Ant. Chỉ những trình báo cáo bạn đăng ký rõ ràng mới được chạy, giúp rút ngắn thời gian chạy đối với các bộ kiểm thử rất lớn.

Tóm tắt bài viết này với: