TestNG: Cara Menjalankan Beberapa Test Suites di Selenium
TestNG memungkinkan Anda menjalankan metode pengujian, kelas pengujian, dan kasus pengujian secara paralel di dalam proyek Anda. Dengan melakukan eksekusi paralel, kita dapat mengurangi 'waktu eksekusi' karena pengujian dimulai dan dieksekusi secara bersamaan di berbagai thread.
Di sini kita akan melihat cara menjalankan beberapa kelas (alias rangkaian berbeda) menggunakan TestNG.
Langkah 1) Membuat a TestNGFile .xml untuk menjalankan tes
Untuk melakukannya ikuti langkah-langkah di bawah ini.
- Buat proyek baru di eclipse
- Buat dua paket di proyek (beri nama sebagai com.suite1 dan com.suite2)
- Buat kelas di setiap paket (beri nama Flipkart.java dan Snapdeal.java) dan salin kode di bawah ini di masing-masing kelas
- Buat file baru di proyek Anda dan beri nama testng.xml (Pastikan Anda telah menginstal plugin pengujian untuk eclipse, petunjuk tersedia di sini). Testng.xml berisi semua konfigurasi (nama kelas, nama uji, dan nama setelan.
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 @BeforeClass public void init() { driver.manage().window().maximize(); driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); driver.navigate().to("https://www.flipkart.com"); } // To log in flipkart @Test public void login() { driver.findElement(By.partialLinkText("Login")).click(); driver.findElement( By.cssSelector(".fk-input.login-form-input.user-email")) .sendKeys(username); driver.findElement( By.cssSelector(".fk-input.login-form-input.user-pwd")) .sendKeys(password); driver.findElement(By.cssSelector(".submit-btn.login-btn.btn")).click(); } // Search For product @Test public void searchAndSelectProduct() { 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(); Alert a = driver.switchTo().alert(); a.accept(); } @Test 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 = ""; // This method is to navigate snapdeal URL @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("pincode-check")).sendKeys(pinCode); 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(); } }
UjiNg.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>
Struktur tugas akhir terlihat seperti di bawah ini,
Langkah 2) Eksekusi paralel di TestNG
Setelah membuat file xml seperti gambar di atas, pada langkah selanjutnya kita akan menjalankan tes paralel. Di bawah ini adalah kodenya.
1) jumlah benang: Ini digunakan untuk eksekusi paralel, berdasarkan skrip nomor. Ini akan dijalankan secara paralel atau berurutan.
2) bertele-tele: Digunakan untuk mencatat detail eksekusi di konsol. Nilainya harus 1-10. Detail log di jendela konsol akan menjadi lebih terperinci dan lebih jelas saat Anda meningkatkan nilai atribut verbose di berkas konfigurasi testng.xml.
3) nama: Nama suite. Ini adalah “Gmail Suite”
4) Paralel: Untuk menjalankan skrip secara paralel, nilainya dapat berupa tes/kelas/metode/suite. Nilai defaultnya adalah tak satupun
Klik kanan pada testng.xml dan pilih run as testing, setelah berhasil Anda akan melihat semua hasilnya
Ketika Anda mengeksekusi kode di atas, Anda akan mendapatkan keluaran berikut.
Keluaran:
1) nama suite yang diberikan di testng.xml
2) nama tes yang diberikan di testng.xml
3) nama kelas yang diberikan di testng.xml
4) nama metode dianotasi dengan @Test di file .java
Demikian pula, ia akan menjalankan rangkaian pengujian untuk snap deal juga.
Kesimpulan
Di sini kita telah melihat contoh di atas, cara menggunakannya Pengujian untuk menjalankan tes paralel. TestNG memberikan opsi untuk menjalankan beberapa pengujian secara paralel dalam satu file konfigurasi (XML).