NỘI DUNG BÀI HỌC

✅Các phương thức Assert phổ biến
✅Các loại Assert trong TestNG
✅Khi nào dùng Hard Assert và Soft Assert?

✅Các phương thức Assert phổ biến

Xem tại docs của TestNG: https://www.javadoc.io/doc/org.testng/testng/latest/org/testng/Assert.html

Phương thức Mô tả
Assert.assertEquals(actual, expected) Kiểm tra giá trị thực tế có bằng giá trị mong đợi không
Assert.assertTrue(condition) Kiểm tra điều kiện có đúng không
Assert.assertFalse(condition) Kiểm tra điều kiện có sai không
Assert.assertNotEquals(actual, expected) Kiểm tra hai giá trị có khác nhau không
Assert.assertNull(object) Kiểm tra giá trị có phải null không
Assert.assertNotNull(object) Kiểm tra giá trị có khác null không

✅Các loại Assert trong TestNG


🔆Hard Assert (org.testng.Assert)

  • Khi một Hard Assert thất bại, nó sẽ dừng ngay lập tức bài kiểm thử.
  • Các câu lệnh sau assert sẽ không được thực thi.

Cách sử dụng: lấy tên class Assert chấm gọi tên hàm assertions như bên trên

Ví dụ về Hard Assert:

package com.anhtester.Bai15_Assertions;

import com.anhtester.common.BaseTest;
import com.anhtester.drivers.DriverManager;
import com.anhtester.keywords.MobileUI;
import io.appium.java_client.AppiumBy;
import org.openqa.selenium.WebElement;
import org.testng.Assert;
import org.testng.annotations.Test;

public class DemoHartAssert extends BaseTest {
    @Test(priority = 1)
    public void testLoginSuccess() {
        DriverManager.getDriver().findElement(AppiumBy.accessibilityId("View menu")).click();
        DriverManager.getDriver().findElement(AppiumBy.accessibilityId("Login Menu Item")).click();

        WebElement headerLoginPage = DriverManager.getDriver().findElement(AppiumBy.id("com.saucelabs.mydemoapp.android:id/loginTV"));
        Assert.assertTrue(headerLoginPage.isDisplayed());
        String headerLoginText = headerLoginPage.getText();
        System.out.println("headerLoginText: " + headerLoginText);

        Assert.assertEquals(headerLoginText, "Login");

        DriverManager.getDriver().findElement(AppiumBy.xpath("//android.widget.EditText[@resource-id=\"com.saucelabs.mydemoapp.android:id/nameET\"]")).clear();
        DriverManager.getDriver().findElement(AppiumBy.xpath("//android.widget.EditText[@resource-id=\"com.saucelabs.mydemoapp.android:id/nameET\"]")).sendKeys("bod@example.com");
        DriverManager.getDriver().findElement(AppiumBy.xpath("//android.widget.EditText[@resource-id=\"com.saucelabs.mydemoapp.android:id/passwordET\"]")).clear();
        DriverManager.getDriver().findElement(AppiumBy.xpath("//android.widget.EditText[@resource-id=\"com.saucelabs.mydemoapp.android:id/passwordET\"]")).sendKeys("10203040");
        DriverManager.getDriver().findElement(AppiumBy.accessibilityId("Tap to login with given credentials")).click();
        MobileUI.sleep(2);

        WebElement headerCatalogPage = DriverManager.getDriver().findElement(AppiumBy.accessibilityId("title"));
        Assert.assertTrue(headerCatalogPage.isDisplayed());
        String headerCatalogText = headerCatalogPage.getText();
        System.out.println("headerCatalogText: " + headerCatalogText);
        
        Assert.assertEquals(headerCatalogText, "Products");

        System.out.println("Login success.");

    }
}
​


Khi Assert.assertTrue(boolean) hoặc Assert.assertEquals(actual, expected) thất bại thì TestNG sẽ dừng kiểm thử và không thực hiện các dòng lệnh sau đó.


🔆Soft Assert (org.testng.asserts.SoftAssert)

  • Soft Assert cho phép bài kiểm thử tiếp tục chạy ngay cả khi một assertion thất bại.
  • Sau khi tất cả các assertion được thực thi, chúng ta cần gọi assertAll() để báo cáo lỗi.


Cách sử dụng:
- Khai báo đối tượng class SoftAssert softAssert = new SoftAssert();
- Lấy đối tượng class softAssert chấm gọi các hàm assertions
- Kết thúc các bước kiểm thử buộc phải gọi hàm softAssert.assertAll()

Ví dụ về Soft Assert:

package com.anhtester.Bai15_Assertions;

import com.anhtester.common.BaseTest;
import com.anhtester.drivers.DriverManager;
import com.anhtester.keywords.MobileUI;
import io.appium.java_client.AppiumBy;
import org.openqa.selenium.WebElement;
import org.testng.annotations.Test;
import org.testng.asserts.SoftAssert;

public class DemoSoftAssert extends BaseTest {
    @Test(priority = 1)
    public void testLoginSuccess() {
        SoftAssert softAssert = new SoftAssert();

        DriverManager.getDriver().findElement(AppiumBy.accessibilityId("View menu")).click();
        DriverManager.getDriver().findElement(AppiumBy.accessibilityId("Login Menu Item")).click();

        WebElement headerLoginPage = DriverManager.getDriver().findElement(AppiumBy.id("com.saucelabs.mydemoapp.android:id/loginTV"));
        softAssert.assertTrue(headerLoginPage.isDisplayed());
        String headerLoginText = headerLoginPage.getText();
        System.out.println("headerLoginText: " + headerLoginText);

        softAssert.assertEquals(headerLoginText, "Login123");

        DriverManager.getDriver().findElement(AppiumBy.xpath("//android.widget.EditText[@resource-id=\"com.saucelabs.mydemoapp.android:id/nameET\"]")).clear();
        DriverManager.getDriver().findElement(AppiumBy.xpath("//android.widget.EditText[@resource-id=\"com.saucelabs.mydemoapp.android:id/nameET\"]")).sendKeys("bod@example.com");
        DriverManager.getDriver().findElement(AppiumBy.xpath("//android.widget.EditText[@resource-id=\"com.saucelabs.mydemoapp.android:id/passwordET\"]")).clear();
        DriverManager.getDriver().findElement(AppiumBy.xpath("//android.widget.EditText[@resource-id=\"com.saucelabs.mydemoapp.android:id/passwordET\"]")).sendKeys("10203040");
        DriverManager.getDriver().findElement(AppiumBy.accessibilityId("Tap to login with given credentials")).click();
        MobileUI.sleep(2);

        WebElement headerCatalogPage = DriverManager.getDriver().findElement(AppiumBy.accessibilityId("title"));
        softAssert.assertTrue(headerCatalogPage.isDisplayed());
        String headerCatalogText = headerCatalogPage.getText();
        System.out.println("headerCatalogText: " + headerCatalogText);

        softAssert.assertEquals(headerCatalogText, "Products");

        System.out.println("Login success.");

        softAssert.assertAll();
    }
}
​


✅Khi nào dùng Hard Assert và Soft Assert?

Hard Assert Soft Assert
Dùng khi không muốn tiếp tục chạy test nếu điều kiện sai Dùng khi muốn chạy tất cả các bước test và báo cáo lỗi sau cùng
Ví dụ: Xác thực đăng nhập, kiểm tra trạng thái quan trọng,...mà không thể đi tiếp bước kế tiếp được. Ví dụ: Kiểm tra nhiều giá trị trên cùng một trang (header, label field, color,...)

Kết luận

  • Hard Assert hữu ích khi cần kiểm tra những điều kiện quan trọng và không muốn chạy tiếp nếu có lỗi.
  • Soft Assert giúp tiếp tục kiểm thử ngay cả khi một hoặc nhiều điều kiện thất bại.
  • Luôn nhớ gọi assertAll() khi dùng Soft Assert để báo cáo tất cả lỗi.

Teacher

Teacher

Anh Tester

Software Quality Engineer

Đường dẫu khó chân vẫn cần bước đi
Đời dẫu khổ tâm vẫn cần nghĩ thấu

Cộng đồng Automation Testing Việt Nam:

🌱 Telegram Automation Testing:   Cộng đồng Automation Testing
🌱 
Facebook Group Automation: Cộng đồng Automation Testing Việt Nam
🌱 
Facebook Fanpage: Cộng đồng Automation Testing Việt Nam - Selenium
🌱 Telegram
Manual Testing:   Cộng đồng Manual Testing
🌱 
Facebook Group Manual: Cộng đồng Manual Testing Việt Nam

Chia sẻ khóa học lên trang

Bạn có thể đăng khóa học của chính bạn lên trang Anh Tester để kiếm tiền

Danh sách bài học