Tìm hiểu về Assertion trong Selenium TestNG.
Trong khi thực hiện testing, việc chúng ta verify được Expected Result của Testcase là điều quan trọng nhất. Nó sẽ đánh giá được rằng Testcase của chúng ta sẽ là Pased hay Failed, đã đảm bảo sản phẩm chạy đúng như spec của khách hàng hay chưa. Dù là Manual Testing hay Automation Testing thì cũng ...
Trong khi thực hiện testing, việc chúng ta verify được Expected Result của Testcase là điều quan trọng nhất. Nó sẽ đánh giá được rằng Testcase của chúng ta sẽ là Pased hay Failed, đã đảm bảo sản phẩm chạy đúng như spec của khách hàng hay chưa. Dù là Manual Testing hay Automation Testing thì cũng đều như vậy, mục đích chính vẫn luôn là verify được Expected Result của Testcase. Và riêng với Selenium WebDriver, TestNG framework cũng đã hỗ trợ cho chúng ta một tập các Asserts để giúp chúng ta verify được kết quả của Automation Testcase.
Vậy Assertion là gì? Asserts là một lib trong TestNG, giúp cho chúng ta dễ dàng verify được Output của automation testcase. Một Test Script được coi là thành công nếu nó được hoàn thành mà không ném ra bất cứ Exception nào.
Mình có một ví dụ phía dưới: Ở đây mình sẽ demo 2 testcase phía dưới sử dụng Selenium with TestNG, sẽ sử dung Assertion để verify Expected Result:
Testcase 1: Verify that user can not login into Google with invalid password Step: 1/ Go to URL: "https://accounts.google.com/ServiceLogin#identifier" 2/ Input valid data into User name textbox 3/ Click on Next button 4/ Input invalid data into Password textbox 5/ Click on Login button Expected result: Display error message: “Wrong password. Try again.”
Testcase 2: Verify that user can login into Google successfully with valid data Step: 1/ Go to URL: "https://accounts.google.com/ServiceLogin#identifier" 2/ Input valid data into User name textbox 3/ Click on Next button 4/ Input valid data into Password textbox 5/ Click on Login button Expected result: Login successfully and redirect to My Account page
1/ Demo: 1/ Để sử dụng được Assertion, đầu tiên phải import lib Assertion vào project của chúng ta. Thực hiện import bằng câu lệnh sau:
import org.testng.Assert;
2/ Tiếp theo chúng ta xây dựng test script cho 2 test case trên: Testcase 1:
@Test public void loginGoogleFailure() throws InterruptedException { //Input valid data into User name textbox driver.findElement(Username).sendKeys("ngocvudoan8292@gmail.com"); //Click on Next button driver.findElement(NextBtn).click(); //Input valid data into Password textbox WebDriverWait wait = new WebDriverWait(driver, 10); WebElement password = wait.until(ExpectedConditions.visibilityOfElementLocated(Password)); password.sendKeys("Test@123"); //Click on Login button driver.findElement(SignInBtn).click(); //Get error message: WebDriverWait waitmsg = new WebDriverWait(driver, 10); WebElement errormsg = waitmsg.until(ExpectedConditions.visibilityOfElementLocated(ErrorMsg)); String actualResult = errormsg.getText(); String expectedResult = "Wrong password. Try again."; //Verify TC: Display error message: “Wrong password. Try again.” Assert.assertEquals(actualResult, expectedResult); }
Kết quả của actualResult:
Ở đoạn script trên mình đã sử dụng Assert.assertEquals để so sánh actualResult là error message chúng ta nhận được từ browser với expectedResult ở testcase của chúng ta là: “Wrong password. Try again.” Và với kết quả trên thì value mà actualResult nhận được là match với expectedResult của Testcase. Vì thế Asserts sẽ trả kết quả Pass cho Testcase này của chúng ta.
Testcase 2:
@Test public void loginGoogleSuccess() throws InterruptedException { //Input valid data into User name textbox driver.findElement(Username).sendKeys("ngocvudoan8292@gmail.com"); //Click on Next button driver.findElement(NextBtn).click(); //Input invalid data into Password textbox WebDriverWait wait = new WebDriverWait(driver, 10); WebElement password = wait.until(ExpectedConditions.visibilityOfElementLocated(Password)); password.sendKeys("201649602123"); //Click on Login button driver.findElement(SignInBtn).click(); String actualResult = driver.getTitle(); String expectedResult = "My Account"; //Verify TC: Login successfully and redirect to My Account page Assert.assertEquals(actualResult, expectedResult); }
Kết quả của actualResult:
Tương tự như testcase 1, ở đây mình đã get được title của trang web mình muốn redirect tới sau khi login thành công là My Account. Như vậy thì Asserts cũng sẽ trả kết quả Pass cho testcase này của chúng ta.
Kết quả testcase:
2/ Kết luận: Qua 2 testcase demo trên, mình đã giúp các bạn hiểu hơn về Assert. Ngoài ví dụ Assert.assertEquals mình sử dụng trong demo này thì Assert còn hỗ trợ nhiều phương thức khác giúp chúng ta dễ dàng verify output của testcase:
-
assertEqual(String actual,String expected) : bao gồm 2 string arguments, verify 2 chuỗi string actual vs expected. Nếu 2 chuỗi equals thì sẽ Passed testcase. Nếu not equals thì nó sẽ Failed testcase và sẽ không throw ra message.
-
assertEqual(String actual,String expected, String message) : bao gồm 3 string arguments, verify 2 chuỗi string actual vs expected. Nếu 2 chuỗi equals thì sẽ Passed testcase. Nếu not equals nó sẽ Failed testcase và throw ra message.
-
assertEquals(boolean actual,boolean expected) : bao gồm 2 boolean arguments, verify 2 boolean actual vs expected. Nếu 2 boolean equals thì sẽ Passed testcase. Nếu not equals thì sẽ Failed testcase.
-
assert.assertTrue(condition) : bao gồm 1 boolean arguments, sẽ kiểm tra xem nếu boolean is true thì sẽ Passed testcase, ngược lại sẽ throw ra AssertionError
-
assert.assertTrue(condition, message) : bao gồm 1 boolean và 1 string arguments, sẽ kiểm tra xem nếu boolean is true thì sẽ Passed testcase, ngược lại sẽ throw ra Assertion Error và message
-
assert.assertFalse(condition) : bao gồm 1 boolean arguments, sẽ kiểm tra xem nếu boolean is failed thì sẽ Passed testcase, ngược lại sẽ throw ra Assertion Error
-
assert.assertFalse(condition, message) : bao gồm 1 boolean và 1 string arguments, sẽ kiểm tra xem nếu boolean is failed thì sẽ Passed testcase, ngược lại sẽ throw ra Assertion Error và message
Trên đây là nhưng phương thức mình hay dùng của assertion để verify output của Testcase. Ngoài ra sẽ vẫn còn rất nhiều phương thức assertion khác, các bạn có thể tìm hiểu thêm trên mạng.
Qua đây mình đã giới thiệu xong về cách sử dụng Assertion. Hy vọng bài viết này sẽ giúp các bạn thuận lợi hơn trong việc phát triển dự án automation của mình.