Selenium - TestNG

TestNG là một khung thử nghiệm mạnh mẽ, một phiên bản nâng cao của JUnit đã được sử dụng trong một thời gian dài trước khi TestNG ra đời. NG là viết tắt của 'Next Generation'.

Khung TestNG cung cấp các tính năng sau:

  • Các chú thích giúp chúng tôi tổ chức các bài kiểm tra một cách dễ dàng.
  • Cấu hình kiểm tra linh hoạt.
  • Các trường hợp kiểm thử có thể được nhóm lại dễ dàng hơn.
  • Có thể thực hiện song song các bài kiểm tra bằng TestNG.
  • Hỗ trợ kiểm tra theo hướng dữ liệu.
  • Báo cáo sẵn có.

Cài đặt TestNG cho Eclipse

Step 1 - Khởi chạy Eclipse và chọn 'Cài đặt Phần mềm Mới'.

Step 2 - Nhập URL là 'http://beust.com/eclipse' và nhấp vào 'Thêm'.

Step 3- Hộp thoại 'Thêm Kho lưu trữ' mở ra. Nhập tên là 'TestNG' và nhấp vào 'OK'

Step 4 - Nhấp vào 'Chọn tất cả' và 'TestNG' sẽ được chọn như trong hình.

Step 5 - Nhấp vào 'Tiếp theo' để tiếp tục.

Step 6 - Xem lại các mục đã chọn và nhấp vào 'Tiếp theo'.

Step 7 - "Chấp nhận Thỏa thuận Cấp phép" và nhấp vào 'Hoàn tất'.

Step 8 - TestNG bắt đầu cài đặt và tiến trình sẽ được hiển thị như sau.

Step 9- Cảnh báo Bảo mật bật lên khi không thể thiết lập tính hợp lệ của phần mềm. Nhấp vào 'Ok'.

Step 10- Trình cài đặt nhắc khởi động lại Eclipse để các thay đổi có hiệu lực. Nhấp vào 'Có'.

Chú thích trong TestNG

Chú thích đã được chính thức thêm vào ngôn ngữ Java trong JDK 5 và TestNG đã lựa chọn sử dụng chú thích để chú thích các lớp thử nghiệm. Sau đây là một số lợi ích của việc sử dụng chú thích. Có thể tìm thấy thêm về TestNGhere

  • TestNG xác định các phương pháp mà nó quan tâm bằng cách tra cứu các chú thích. Do đó, tên phương thức không bị giới hạn ở bất kỳ mẫu hoặc định dạng nào.

  • Chúng tôi có thể chuyển các tham số bổ sung cho các chú thích.

  • Chú thích được đánh mạnh, vì vậy trình biên dịch sẽ gắn cờ bất kỳ lỗi nào ngay lập tức.

  • Các lớp thử nghiệm không còn cần phải mở rộng bất kỳ thứ gì (chẳng hạn như TestCase, cho JUnit 3).

Sr.No. Chú thích & Mô tả
1

@BeforeSuite

Phương thức chú thích sẽ chỉ được chạy một lần trước khi tất cả các thử nghiệm trong bộ phần mềm này chạy.

2

@AfterSuite

Phương thức chú thích sẽ chỉ được chạy một lần sau khi tất cả các thử nghiệm trong bộ phần mềm này đã chạy.

3

@BeforeClass

Phương thức chú thích sẽ chỉ được chạy một lần trước khi phương thức thử nghiệm đầu tiên trong lớp hiện tại được gọi.

4

@AfterClass

Phương thức chú thích sẽ chỉ được chạy một lần sau khi tất cả các phương thức kiểm tra trong lớp hiện tại đã chạy.

5

@BeforeTest

Phương thức chú thích sẽ được chạy trước khi chạy bất kỳ phương thức kiểm tra nào thuộc các lớp bên trong thẻ <test>.

6

@AfterTest

Phương thức chú thích sẽ được chạy sau khi tất cả các phương thức kiểm tra thuộc các lớp bên trong thẻ <test> đã chạy.

7

@BeforeGroups

Danh sách các nhóm mà phương pháp cấu hình này sẽ chạy trước đó. Phương pháp này được đảm bảo sẽ chạy ngay trước khi phương pháp thử nghiệm đầu tiên thuộc bất kỳ nhóm nào trong số này được gọi.

số 8

@AfterGroups

Danh sách các nhóm mà phương pháp cấu hình này sẽ chạy sau. Phương pháp này được đảm bảo sẽ chạy ngay sau khi phương pháp thử nghiệm cuối cùng thuộc bất kỳ nhóm nào trong số này được gọi.

9

@BeforeMethod

Phương thức được chú thích sẽ được chạy trước mỗi phương pháp thử nghiệm.

10

@AfterMethod

Phương thức được chú thích sẽ được chạy sau mỗi phương pháp thử nghiệm.

11

@DataProvider

Đánh dấu một phương pháp là cung cấp dữ liệu cho một phương pháp thử nghiệm. Phương thức chú thích phải trả về một Đối tượng [] [] trong đó mỗi Đối tượng [] có thể được gán danh sách tham số của phương thức thử nghiệm. Phương thức @Test muốn nhận dữ liệu từ DataProvider này cần sử dụng tên dataProvider bằng với tên của chú thích này.

12

@Factory

Đánh dấu một phương thức là một nhà máy trả về các đối tượng sẽ được TestNG sử dụng dưới dạng các lớp Kiểm tra. Phương thức phải trả về Object [].

13

@Listeners

Xác định người nghe trên một lớp thử nghiệm.

14

@Parameters

Mô tả cách truyền tham số cho phương thức @Test.

15

@Test

Đánh dấu một lớp hoặc một phương thức là một phần của bài kiểm tra.

Thiết lập TestNG-Eclipse

Step 1 - Khởi chạy Eclipse và tạo một 'Dự án Java mới' như hình dưới đây.

Step 2 - Nhập tên dự án và nhấp vào 'Tiếp theo'.

Step 3 - Điều hướng đến Tab "Thư viện" và Thêm tệp JAR của Máy chủ Điều khiển Từ xa Selenium bằng cách nhấp vào "Thêm JAR bên ngoài" như hình dưới đây.

Step 4- Tệp JAR đã thêm được hiển thị ở đây. Nhấp vào 'Thêm Thư viện'.

Step 5- Hộp thoại 'Thêm Thư viện' mở ra. Chọn 'TestNG' và nhấp vào 'Tiếp theo' trong hộp thoại 'Thêm Thư viện'.

Step 6 - Thư viện 'TestNG' được thêm vào được thêm vào và nó được hiển thị như hình dưới đây.

Step 7 - Khi tạo dự án, cấu trúc của dự án sẽ như hình dưới đây.

Step 8 - Nhấp chuột phải vào thư mục 'src' và chọn New >> Other.

Step 9 - Chọn 'TestNG' và nhấp vào 'Tiếp theo'.

Step 10 - Chọn tên 'Thư mục Nguồn' và nhấp vào 'Ok'.

Step 11 - Chọn 'Tên gói', 'tên lớp' và nhấp vào 'Hoàn tất'.

Step 12 - Trình khám phá gói và lớp đã tạo sẽ được hiển thị.

Thử nghiệm đầu tiên trong TestNG

Bây giờ chúng ta hãy bắt đầu viết kịch bản bằng TestNG. Hãy để chúng tôi viết kịch bản cho cùng một ví dụ mà chúng tôi đã sử dụng để hiểu WebDriver. Chúng tôi sẽ sử dụng ứng dụng demo, www.calculator.net và thực hiện máy tính phần trăm.

Trong thử nghiệm sau, bạn sẽ nhận thấy rằng KHÔNG có phương thức chính, vì testNG sẽ điều khiển luồng thực thi chương trình. Sau khi khởi tạo trình điều khiển, nó sẽ thực thi phương thức '@BeforeTest', theo sau là '@Test' và sau đó là '@AfterTest'. Xin lưu ý rằng có thể có bất kỳ số lượng chú thích '@Test' nào trong một lớp nhưng '@BeforeTest' và '@AfterTest' chỉ có thể xuất hiện một lần.

package TestNG;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;

import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

public class TestNGClass {
   WebDriver driver = new FirefoxDriver();
   
   @BeforeTest
   public void launchapp() {
      // Puts an Implicit wait, Will wait for 10 seconds before throwing exception
      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
      
      // Launch website
      driver.navigate().to("http://www.calculator.net");
      driver.manage().window().maximize();
   }
   
   @Test
   public void calculatepercent() {
      // Click on Math Calculators
      driver.findElement(By.xpath(".//*[@id='menu']/div[3]/a")).click();
      
      // Click on Percent Calculators
      driver.findElement(By.xpath(".//*[@id='menu']/div[4]/div[3]/a")).click();
      
      // Enter value 10 in the first number of the percent Calculator
      driver.findElement(By.id("cpar1")).sendKeys("10");
      
      // Enter value 50 in the second number of the percent Calculator
      driver.findElement(By.id("cpar2")).sendKeys("50");
      
      // Click Calculate Button
      driver.findElement(By.xpath(".//*[@id='content']/table/tbody/tr/td[2]/input")).click();
      
      // Get the Result Text based on its xpath
      String result =
         driver.findElement(By.xpath(".//*[@id='content']/p[2]/span/font/b")).getText();
      
      // Print a Log In message to the screen
      System.out.println(" The Result is " + result);
      
      if(result.equals("5")) {
         System.out.println(" The Result is Pass");
      } else {
         System.out.println(" The Result is Fail");
      }
   }
   
   @AfterTest
   public void terminatetest() {
      driver.close();
   }
}

Chấp hành

Để thực thi, nhấp chuột phải vào XML đã tạo và chọn "Run As" >> "TestNG Suite"

Phân tích kết quả

Đầu ra được chuyển đến bảng điều khiển và nó sẽ xuất hiện như hình dưới đây. Đầu ra của bảng điều khiển cũng có một bản tóm tắt thực thi.

Kết quả của TestNG cũng có thể được nhìn thấy trong một tab khác. Nhấp vào nút 'Chế độ xem Báo cáo HTML' như được hiển thị bên dưới.

Kết quả HTML sẽ được hiển thị như hình dưới đây.