DevOps AI
  • Home
  • Bảo mật
  • AI & Automation
  • DevOps & Cloud
  • Bộ đề luyện thi cloud
No Result
View All Result
DevOpsAI
  • Home
  • Bảo mật
  • AI & Automation
  • DevOps & Cloud
  • Bộ đề luyện thi cloud
No Result
View All Result
DevOpsAI
No Result
View All Result
Home AI & Automation

Extent Reports với TestNG trong Selenium Java

Huyen Tran by Huyen Tran
1 Tháng 5, 2025
in AI & Automation
0
Share on FacebookShare on Twitter

HIện nay có rất nhiều loại repport được sử dụng với Selenium như Allure Report, TestNG Report… Trong bài này, tôi sẽ giới thiệu với các bạn cách để tạo report sử dụng Extend Reports với TestNG trong Selenium.

Chúng ta sẽ sử dụng TestNG listeners và IRetryAnalyzer interface, Extent Reports 5 classes để tạo ra các report rõ ràng, đẹp và hữu ích.

Trước khi bắt đầu bài này, tôi đề xuất các bạn nên xem qua bài “PageObjectModel with JAVA” trước. Trong bài đó, tôi đã hướng dẫn cách tạo Automation test sử dụng Selenium WebDriver như sau:

  • Java Maven Project
  • Page Object Model design pattern
  • TestNG Test Automation Framework

Ok, chúng ta bắt đầu làm từng bước nhé!

Related Post

Selenium Tutorial – Java

Selenium Tutorial – Java

1 Tháng 5, 2025
Detox – gray box end-to-end testing automation framework cho ứng dụng React Native

Detox – gray box end-to-end testing automation framework cho ứng dụng React Native

1 Tháng 5, 2025

Cách xử lý các sự kiện bàn phím và chuột trong Selenium sử dụng class Actions

1 Tháng 5, 2025

Cách dùng JavaScript Executor trong Selenium

1 Tháng 5, 2025

Sơ lược về TestNG listeners, IRetryAnalyze và Extend Report

Listener trong TestNG là gì?

Listener trong TestNG là một interface cho phép chỉnh sửa những hành vi mặc định của TestNG. Nó lắng nghe (listen) các sự kiện được xác định trong Selenium Script hàng xử theo. Nó cho phép tùy chỉnh các report hoặc các bản ghi log. Có nhiều loại Listeners có sẵn mà cho phép chúng ta ta thay đổi hành vi là:

  1. IAnnotationTransformer ,
  2. IAnnotationTransformer2 ,
  3. IConfigurable ,
  4. IConfigurationListener ,
  5. IExecutionListener,
  6. IHookable ,
  7. IInvokedMethodListener ,
  8. IInvokedMethodListener2 ,
  9. IMethodInterceptor ,
  10. IReporter,
  11. ISuiteListener,
  12. ITestListener
  13. IRetryAnalyze

TestNG IRetryAnalyze

TestNG IRetryAnalyze là một giải pháp giúp cho việc chạy lại (rerun) các kiểm thử không thành công (Test failed) trong một khoản thời gian nhất định trước khi gửi kết quả kiểm thử.

Cấu trúc của Extent Reports Project 

Chúng ta sẽ thêm 2 packages extentreports và listener packages vào “Utils package”

Trong extentreports package sẽ tạo 2 lớp (class) Extent Reports custom như sau:

  • ExtentManager
  • ExtentTestManager

Trong listener package sẽ tạo 3 lớp (class) như sau:

  • AnnotationTransformer
  • Retry
  • TestListener

Step-1: Thêm Extent Reports Maven Dependency

Thêm Extent Report dependency vào pom.xml file. (Tôi đã sử dụng latest version 5.0.9 khi viết bài này, Bạn có thể tìm latest version tại đây nhé https://mvnrepository.com/artifact/com.aventstack/extentreports )

<!-- https://mvnrepository.com/artifact/com.aventstack/extentreports -->
       <dependency>
           <groupId>com.aventstack</groupId>
           <artifactId>extentreports</artifactId>
           <version>5.0.9</version>
       </dependency>

       <dependency>
           <groupId>tech.grasshopper</groupId>
           <artifactId>htmlextentreporter</artifactId>
           <version>1.0.0</version>
       </dependency>

Step 2- ExtentReports Classes

ExtentManager Class:

Trong lớp này, chúng ta sẽ tạo  object ExtentReports và nó sẽ được truy cập thông qua method createExtentReports()

  • Để setup các thông số của report, chúng ta có thể sử dụng method setSystemInfo();
  • Bạn cũng cần lưu ý setup tên report và nơi sẽ chứa Extent Report vừa được tạo ra.
ExtentSparkReporter reporter = new ExtentSparkReporter("./extent-reports/extent-report.html");
  • Để setup các thông số của report, chúng ta có thể sử dụng method setSystemInfo();
package Utils.extentreports;

import com.aventstack.extentreports.ExtentReports;
import com.aventstack.extentreports.reporter.ExtentSparkReporter;

public class ExtentManager {
        public static final ExtentReports extentReports = new ExtentReports();
        public synchronized static ExtentReports createExtentReports() {
            ExtentSparkReporter reporter = new ExtentSparkReporter("./extent-reports/extent-report.html");
            reporter.config().setReportName("Extent Report");
            extentReports.attachReporter(reporter);
            extentReports.setSystemInfo("Project", "Selenium Automation Test");
            extentReports.setSystemInfo("Author", "Huyen Tran");
            return extentReports;
        }
}

ExtentTestManager Class:

  • Khởi tạo extentTestMap map để chứa thông tin của thread ids và ExtentTest instances.
  • ExtentReport instance được tạo bằng cách gọi method createExtentReports() từ class ExtentManager.
  • Method startTest() trả về instance ExtentTest mới tạo ra và lưu vào extentTestMap với thead id hiện tại.
  • Method getTest() trả về instance ExtentTest trong extentTestMap của thead id hiện tại.
package Utils.extentreports;

import com.aventstack.extentreports.ExtentReports;
import com.aventstack.extentreports.ExtentTest;

import java.util.HashMap;
import java.util.Map;

public class ExtentTestManager {
        static Map<Integer, ExtentTest> extentTestMap = new HashMap<>();
        static ExtentReports extent = ExtentManager.createExtentReports();

        public static synchronized ExtentTest getTest() {
            return extentTestMap.get((int) Thread.currentThread().getId());
        }

        public static synchronized ExtentTest startTest(String testName, String desc) {
            ExtentTest test = extent.createTest(testName, desc);
            extentTestMap.put((int) Thread.currentThread().getId(), test);
            return test;
        }

}

Step 3- Listener class

Để listen được các sự kiện test xảy ra như kiểm thử thành công (Test passed), kiểm thử không thành công (Test failed) hay bị bỏ qua (skipped) …, chúng ta cần phải thêm class TestListener.

Đối với trường hợp kiểm thử không thành công, cần cho chạy lại, chúng ta sẽ thêm class AnnotationTransformer, Retry

 

 

Tags: automation testextent reportseleniumtestng
Huyen Tran

Huyen Tran

Related Posts

Selenium Tutorial – Java
AI & Automation

Selenium Tutorial – Java

by Huyen Tran
1 Tháng 5, 2025
Detox – gray box end-to-end testing automation framework cho ứng dụng React Native
AI & Automation

Detox – gray box end-to-end testing automation framework cho ứng dụng React Native

by Huyen Tran
1 Tháng 5, 2025
Cách xử lý các sự kiện bàn phím và chuột trong Selenium sử dụng class Actions
AI & Automation

Cách xử lý các sự kiện bàn phím và chuột trong Selenium sử dụng class Actions

by Huyen Tran
1 Tháng 5, 2025
Next Post

XPath cheatsheet

Để lại một bình luận Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Recommended

Cài đặt Maven trên Windows

25 Tháng 4, 2025

Các website demo hay được sử dụng cho thực hành Automation Test

1 Tháng 5, 2025
Cài đặt Jenkins bằng Docker

Cài đặt Jenkins bằng Docker

30 Tháng 4, 2025

Kiểm tra tài nguyên CPU, RAM trên Ubuntu 22.04

25 Tháng 4, 2025
Unit Test là gì?

Unit Test là gì?

29 Tháng 4, 2025
cdk terraform

CDK cho Terraform

29 Tháng 4, 2025
Hướng Dẫn Thiết Lập LDAPS Trên Windows Server 2022

Hướng Dẫn Thiết Lập LDAPS Trên Windows Server 2022

26 Tháng 4, 2025
DeepSeek AI là gì? Tổng hợp các mô hình DeepSeek mạnh mẽ nhất hiện nay

DeepSeek AI là gì? Tổng hợp các mô hình DeepSeek mạnh mẽ nhất hiện nay

1 Tháng 5, 2025
DevOpsify

Cộng đồng DevOps Việt Nam chia sẽ kiến thức giúp tăng tốc quá trình phát triển ứng dụng và tự động hóa trong lĩnh vực Cloud DevOps & AI.

Bài viết mới

  • Unit Test là gì?
  • CDK cho Terraform
  • Hướng Dẫn Thiết Lập LDAPS Trên Windows Server 2022

Categories

  • AI & Automation
  • Bảo mật
  • Chưa phân loại
  • DevOps & Cloud
  • Tin tức
No Result
View All Result
  • Home
  • Bảo mật
  • AI & Automation
  • DevOps & Cloud
  • Bộ đề luyện thi cloud

© 2025 DevOpsify