Chào các bạn đã đến với chủ đề tiếp theo của mình. Ở những bài trước, chúng ta đã từng sử dụng hàm Assert để kiểm tra kết quả một cách tự đông, ví dụ như hàm assertEquals() hay assertTrue(). Trong bài này, mình sẽ giới thiệu thêm đến các bạn 1 số hàm Assert thường được sử dụng khác. Bạn nào muốn xem full list thì có thể xem ở link này nhé.
1. Những method assert do TestNG cung cấp
Về Assert thì chúng ta có 2 loại: Hard Assert và Soft Assert.
1.1. Hard Assert
Hard Assert là 1 kỹ thuật được sử dụng để kiểm tra một điều kiện nhất định có đúng hay không. Nói cách khác, đó là 1 cách để xác minh rằng đoạn code có chạy đúng theo mong đợi hay không. Nếu kết quả thực tế giống với kết quả mong đợi, thì đoạn code đó sẽ được chạy qua, và nó sẽ tiếp tục kiểm tra đến đoạn code kế tiếp. Ngược lại, nếu kết quả thực tế không giống với mong đợi, thì quá trình kiểm thử sẽ dừng lại. Nó sẽ bỏ qua những đoạn code phía sau, và kết quả sẽ trả về là failed.
Ví dụ: Giả sử trong test case của bạn có 3 check point để verify. Khi sử dụng Hard Assert, nếu check point đầu tiên bị failed, thì TestNG sẽ stop ngay mà không quan tâm đến check point 2 và 3.
1 số hàm thường được sử dụng trong TestNG:
- assertEquals(actual, expected):
- Dùng để so sánh bằng nhau 2 phần tử có cùng TYPE (cùng kiểu dữ liệu). Method này có thể so sánh rất nhiều loại: dữ liệu nguyên thủy như int, long, double, char, boolean; String; Object; Collections; Maps…
- Lưu ý: cái gì phần tử thực tế (actual), ta đặt ở vị trí argument 1. Cái nào là phần tử ta mong đợi (expected), ta đặt ở argument 2.
@Test
public void TC_02_Verify_Page_Title() {
driver.get("http://the-internet.herokuapp.com/login");
String actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, "The Internet");
}
- assertNotEquals(actual, expected)
- Tương tự như phần trên, chỉ khác là so sánh KHÔNG bằng nhau.
- assertTrue(boolean condition)
- Ta dùng trong trường hợp, ta mong đợi kết quả trả về là true. Nó tương đương với việc sử dụng assertEquals(actual, expected) khi actual và expected có TYPE là boolean.
@Test
public void TC_01_Radio_Button() {
// Navigate to demo site
driver.get("https://demos.telerik.com/kendo-ui/radiobutton/index");
// Find element of radio button: 2.0 Petrol, 147kW
WebElement radio = driver.findElement(By.xpath("//label[text() = '2.0 Petrol, 147kW']/preceding-sibling::input"));
// Select radio button: 2.0 Petrol, 147kW
radio.click();
// Verify radio button : 2.0 Petrol, 147kW is selected
Assert.assertTrue(radio.isSelected());
}
- assertFalse(boolean condition)
- Ta dùng trong trường hợp, ta mong đợi kết quả trả về là true. Nó tương đương với việc sử dụng assertEquals(actual, expected) khi actual và expected có TYPE là boolean.
- assertNull(Object)
- Ta sử dụng trong trường hợp ta mong đợi rằng cái Object ta đang nhắm tới là Null.
- assertNotNull(Object)
- Ta sử dụng trong trường hợp ta mong đợi rằng cái Object ta đang nhắm tới là Not Null.
1.2. Soft Assert
Ngược lại với Hard Assert, khi kiểm tra kết quả thực tế với kết quả mong đợi, nếu không giống nhau, Soft Assert vẫn sẽ tiếp tục kiểm tra những đoạn code phía sau nó.
Ví dụ: Giả sử trong test case của bạn có 3 check point để verify. Khi sử dụng Soft Assert, nếu check point đầu tiên bị failed, thì TestNG sẽ vẫn sẽ tiếp tục kiểm tra check point 2 và 3.
Sample code:
@Test
public void TC_02_Verify_Page_Title() {
driver.get("http://the-internet.herokuapp.com/login");
SoftAssert softassert = new SoftAssert();
// Get actual title
String actualTitle = driver.getTitle();
// Cố tình verify fail
System.out.println("First verify");
softassert.assertEquals(actualTitle, "The Internet1");
// Verify again
System.out.println("Second verify");
softassert.assertEquals(actualTitle, "The Internet");
softassert.assertAll();
}
Kết quả:
2. Lời kết
Đến đây thì mình xin kết thúc bài hôm nay. Các bạn hãy làm lại theo ví dụ trên để hiểu bài hơn nhé. Mình hy vọng bài viết này sẽ hữu ích cho các bạn. Cảm ơn các bạn đã theo dõi bài viết của mình. Hẹn gặp lại các bạn ở những chủ đề tiếp theo.
Nguồn:
https://giangtester.com/bai-17-nhung-method-assert-do-testng-cung-cap/