Chuyên mục
Zalo

Lão Bạch – Kết nối và yêu thương

Cài đặt và sử dụng Extent Report Allure Report với framework TestNG trong Selenium Java

Trong bài viết này, chúng ta sẽ tìm hiểu về cách cài đặt và sử dụng Extent Report và Allure Report với framework TestNG trong Selenium Java. Đồng thời, chúng ta cũng sẽ tìm hiểu về khái niệm Page Object Model (POM) trong Selenium Java.

1. Cài đặt Extent Report trong Selenium Java

Để cài đặt Extent Report trong Selenium Java, chúng ta cần thêm gói Extent Report và trình lắng nghe (Listeners) vào file pom.xml như sau:

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

Sau khi đã thêm thư viện Extent Reports vào pom.xml, chúng ta cần tạo Extent Reports class và Extent Test Manager class. Ví dụ:

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

public class ExtentManager {
    private static final ExtentReports extentReports = new ExtentReports();

    public synchronized static ExtentReports getExtentReports() {
        ExtentSparkReporter reporter = new ExtentSparkReporter("./ExtentReports/ExtentReport.html");
        reporter.config().setReportName("Demo Extent Report");
        extentReports.attachReporter(reporter);
        extentReports.setSystemInfo("Framework Name", "Selenium Java Framework | Anh Tester");
        extentReports.setSystemInfo("Author", "Anh Tester");
        return extentReports;
    }
}

Trong class ExtentManager, chúng ta cần chỉ định đường dẫn xuất ra file HTML cho Extent Report và có thể tùy chỉnh các thông tin khác như tên báo cáo và thông tin tác giả.

Tiếp theo, chúng ta tạo một class Extent Test Manager để quản lý các Extent Test objects:

import com.aventstack.extentreports.ExtentReports;
import com.aventstack.extentreports.ExtentTest;
import com.aventstack.extentreports.Status;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;

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

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

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

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

    public static void addScreenShot(String message) {
        String base64Image = "data:image/png;base64," + ((TakesScreenshot) BaseSetup.getDriver()).getScreenshotAs(OutputType.BASE64);
        getTest().log(Status.INFO, message, MediaEntityBuilder.createScreenCaptureFromBase64String(base64Image).build());
    }

    public static void addScreenShot(Status status, String message) {
        String base64Image = "data:image/png;base64," + ((TakesScreenshot) BaseSetup.getDriver()).getScreenshotAs(OutputType.BASE64);
        getTest().log(status, message, MediaEntityBuilder.createScreenCaptureFromBase64String(base64Image).build());
    }

    public static void logMessage(String message) {
        getTest().log(Status.INFO, message);
    }

    public static void logMessage(Status status, String message) {
        getTest().log(status, message);
    }
}

Class ExtentTestManager giúp quản lý các Extent Test objects và cung cấp các phương thức hỗ trợ ghi log và chụp ảnh màn hình.

Xem thêm  Hướng dẫn đăng nhập Zalo trên máy tính từ A- Z: Tất cả những gì bạn cần biết

Cuối cùng, chúng ta cần thêm Listener class vào test case class đang sử dụng framework TestNG. Ví dụ:

import anhtester.com.utils.listeners.ReportListener;
import org.testng.annotations.Listeners;

@Listeners(ReportListener.class)
public class ProjectTest {
    // ...
}

Chúng ta có thể gọi Listener class ở cấp độ class hoặc suite tùy ý.

2. Cài đặt Allure Report trong Selenium Java

Để cài đặt Allure Report trong Selenium Java, chúng ta cần thêm thư viện Allure TestNG vào file pom.xml như sau:

<!-- https://mvnrepository.com/artifact/io.qameta.allure/allure-testng -->
<dependency>
    <groupId>io.qameta.allure</groupId>
    <artifactId>allure-testng</artifactId>
    <version>2.19.0</version>
</dependency>

Sau khi đã thêm thư viện Allure TestNG vào pom.xml, chúng ta cần thêm các tùy chỉnh Allure Reports vào class ReportListener. Ví dụ:

import io.qameta.allure.Attachment;

public class ReportListener implements ITestListener {
    // ...

    @Attachment(value = "{0}", type = "text/plain")
    public static String saveTextLog(String message) {
        return message;
    }

    @Attachment(value = "{0}", type = "image/png")
    public byte[] saveScreenshotPNG(WebDriver driver) {
        return ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES);
    }

    // ...
}

Class ReportListener có các phương thức ghi log và chụp ảnh cho Allure Report.

Cuối cùng, để mở Allure Report, chúng ta chạy lệnh sau trong Terminal:

allure serve allure-results

Sau khi chạy lệnh, Allure Report sẽ được tạo và mở trên trình duyệt tự động. Chúng ta có thể xem chi tiết từng bước của test case và các ảnh chụp màn hình đã lưu.

Đây là cách cài đặt và sử dụng Extent Report và Allure Report với framework TestNG trong Selenium Java. Hy vọng bài viết mang đến cho bạn những kiến thức hữu ích và áp dụng vào công việc của mình.


Lão Bạch – Kết nối và yêu thương