Tech

TestNG: Cách chạy nhiều Test Suites trong Selenium

TestNG cho phép bạn chạy các test methods, các class testing và các trường hợp testing song song bên trong dự án của bạn. Bằng cách thực hiện thực thi song song, chúng ta có thể giảm ‘thời gian thực thi’ khi các bài kiểm tra được bắt đầu và thực hiện đồng thời trong các luồng khác nhau.

Ở đây chúng ta sẽ thấy cách chạy nhiều class (hay còn gọi là các bộ khác nhau) bằng TestNG.

Bước 1) Tạo tệp TestNG.xml để thực hiện kiểm tra

Để làm điều đó, hãy làm theo các bước dưới đây.

  1. Tạo một dự án mới trong eclipse
  2. Tạo hai gói trong các dự án (đặt tên chúng là com.suite1 và com.suite2)
  3. Tạo một class trong mỗi gói (đặt tên chúng là Flipkart.java và Snapdeal.java) và sao chép mã dưới đây trong các class tương ứng
  4. Tạo một tệp mới trong dự án của bạn và đặt tên là testng.xml (Đảm bảo rằng bạn đã cài đặt plugin testing cho eclipse). Testng.xml chứa tất cả cấu hình (tên class, tên testing và tên bộ.

Flipkart.java

package com.suite1;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.Alert;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.firefox.FirefoxDriver;

import org.openqa.selenium.interactions.Actions;

import org.testng.annotations.AfterClass;

import org.testng.annotations.BeforeClass;

import org.testng.annotations.Test;

public class Flipkart{

WebDriver driver = new FirefoxDriver();

String username = “”; // Change to your username and passwrod

String password = “”;

// This method is to navigate flipkart URL

public void init() {

driver.findElement(By.id(“fk-top-search-box”)).sendKeys(“moto g3”);

driver.findElement(

By.cssSelector(“search-bar-submit.fk-font-13.fk-font-bold”))

.click();

// select the first item in the search results

String css = “.gd-row.browse-grid-row:nth-of-type(1) > div:nth-child(1)>div>div:nth-child(2)>div>a”;

driver.findElement(By.cssSelector(css)).click();

}

@Test

public void buyAndRemoveFromCart() {

driver.findElement(

By.cssSelector(“.btn-express-checkout.btn-big.current”))

.click();

driver.findElement(By.cssSelector(“.remove.fk-inline-block”)).click();

a.accept();

}

public void logout() {

Actions s = new Actions(driver);

WebElement user = driver.findElement(By.partialLinkText(username));

s.moveToElement(user).build().perform();

driver.findElement(By.linkText(“Logout”)).click();

}

@AfterClass

public void quit() {

driver.close();

}

}

SnapDeal.java

package com.suite2;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.Alert;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.firefox.FirefoxDriver;

import org.openqa.selenium.interactions.Actions;

import org.testng.annotations.AfterClass;

import org.testng.annotations.BeforeClass;

import org.testng.annotations.Test;

public class SnapDeal {

WebDriver driver = new FirefoxDriver();

String username = “”; // Change to your username and passwrod

String password = “”;

String pinCode = “”;

@BeforeClass

public void init() {

driver.manage().window().maximize();

driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);

driver.navigate().to(“https://www.snapdeal.com”);

}

// To log in flipkart

@Test

public void login() {

driver.findElement(By.xpath(“//button[text()=’Login’]”)).click();

driver.switchTo().frame(“loginIframe”);

driver.findElement(By.cssSelector(“div[onClick=’getLoginForm()’]”))

.click();

driver.findElement(By.id(“j_username”)).sendKeys(username);

driver.findElement(By.id(“j_password_login”)).sendKeys(password);

driver.findElement(By.id(“signin_submit”)).click();

driver.switchTo().defaultContent();

}

// Search For product

@Test

public void searchAndSelectProduct() {

driver.findElement(By.cssSelector(“.col-xs-20.searchformInput.keyword”))

.sendKeys(“iphone 6s”);

driver.findElement(By.cssSelector(“.sd-icon.sd-icon-search”)).click();

// select the first item in the search results

String css = “.product_grid_row:nth-of-type(1)>div:nth-child(1)”;

driver.findElement(By.cssSelector(css)).click();

}

@Test

public void buyAndRemoveFromCart() {

driver.findElement(By.xpath(“//li[contains(text(),’Silver’)]”)).click();

driver.findElement(By.id(“buy-button-id”)).click();

driver.findElement(By.cssSelector(“i[title=’Delete Item’]”)).click();

Alert a = driver.switchTo().alert();

a.accept();

}

@Test

public void logout() {

driver.findElement(By.linkText(“START SHOPPING NOW”)).click();

Actions s = new Actions(driver);

WebElement user = driver.findElement(By.cssSelector(“.sd-icon.sd-icon-user”));

s.moveToElement(user).build().perform();

driver.findElement(By.linkText(“Logout”)).click();

}

@AfterClass

public void quit() {

driver.close();

}

}

TestNg.xml

<!DOCTYPE suite SYSTEM “http://testng.org/testng-1.0.dtd”>

<suite thread-count=”1″ verbose=”1″ name=”Gmail Suite” annotations=”JDK” parallel=”tests”>

  <test name=”flipkart”>

<classes>

  <class name=”com.suite1.Flipkart”/>

</classes>

   </test>

  <test name=”Myntra”>

     <classes>

       <class name=”com.suite2.SnapDeal”/>

     </classes>

   </test>

</suite>

Cấu trúc dự án cuối cùng trông giống như bên dưới,

Bước 2) Thực hiện song song trong TestNG

Sau khi tạo tệp xml như hình trên, bước tiếp theo, chúng ta sẽ thực hiện kiểm tra song song. Dưới đây là mã.

1)  thread-count : Điều này được sử dụng để thực thi song song, dựa trên tập lệnh số. Nó sẽ thực hiện theo thứ tự song song hoặc tuần tự.

2) verbose : Nó được sử dụng để ghi lại các chi tiết thực thi trong bảng điều khiển. Giá trị phải là 1-10. Chi tiết nhật ký trong cửa sổ bảng điều khiển sẽ chi tiết và rõ ràng hơn khi bạn tăng giá trị của thuộc tính verbose trong tệp cấu hình testng.xml.

3) name : Tên của bộ. Đây là “Gmail Suite”

4) Parallel : Để chạy các tập lệnh song song, giá trị có thể là các bài kiểm tra / class / phương thức / bộ. Giá trị mặc định là không có

Nhấp chuột phải vào testng.xml và chọn chạy dưới dạng testing, sau khi thành công, bạn sẽ thấy tất cả kết quả

Khi bạn thực thi đoạn mã trên, bạn sẽ nhận được kết quả sau.

Đầu ra:

1) tên của bộ được cung cấp trong testng.xml

2) tên của bài kiểm tra được đưa ra trong testng.xml

3) tên của class được đưa ra trong testng.xml

4) tên phương thức được chú thích bằng @Test trong tệp .java

Tương tự như vậy, nó cũng sẽ thực thi bộ testing cho giao dịch nhanh.

Sự kết luận:

Ở đây chúng ta đã thấy trong ví dụ trên, cách sử dụng Testng để thực hiện kiểm tra song song. TestNG cung cấp một tùy chọn để thực hiện song song nhiều bài kiểm tra trong một tệp cấu hình duy nhất (XML).

Blog Tiền Điện Tử

Blog tiền điện tử công thông tin tổng hợp uy tín nhất tất cả các mảng xã hội, giáo dục , công nghệ số. Với khả năng số hóa mạnh mẽ hy vọng sẽ mang lại cho quý bạn đọc những thông tin chính xác nhất 24/24
Back to top button