NỘI DUNG BÀI HỌC
✅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ênVí 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.