TestNG @Uji Prioritas dalam Selenium
TestNG adalah pengujian kerangka kerja, yang mencakup berbagai jenis desain pengujian seperti pengujian unit, pengujian fungsional, pengujian ujung ke ujung, pengujian UI, dan pengujian integrasi.
Anda dapat menjalankan satu atau beberapa kasus uji di file Pengujian kode.
Jika prioritas pengujian tidak ditentukan saat menjalankan beberapa kasus pengujian, TestNG menugaskan semua @Test sebagai prioritas sebagai nol(0).
Sekarang, sambil berlari; prioritas yang lebih rendah akan dijadwalkan terlebih dahulu.
Demo dari TestNG kode tanpa Prioritas
Mari kita ambil skenario di mana pengurutan diperlukan agar dapat lulus semua kasus uji:
Skenario: Buat kode di mana Anda diharuskan untuk melakukan Google Lakukan pencarian dengan kata kunci tertentu, misalnya โFacebookโ. Sekarang, verifikasi bahwa judul browser telah berubah menjadi โFacebook โ Google Mencari".
Catatan: Setiap langkah yang Anda kodekan harus dalam metode terpisah
Metode 1: Buka Browser, ucapkan Firefox (peramban terbuka())
Metode 2: Meluncurkan Google.com (luncurkan)Google())
Metode 3: Melakukan pencarian menggunakan โFacebookโ (performSearchAndClick1stLink())
Metode 4: Verifikasi Google cari judul halaman (FaceBookPageTitleVerification())
Code untuk skenario kita:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.Test;
public class Priority_In_testNG {
WebDriver driver;
// Method 1: Open Brower say Firefox
@Test
public void openBrowser() {
driver = new FirefoxDriver();
}
// Method 2: Launch Google.com
@Test
public void launchGoogle() {
driver.get("http://www.google.co.in");
}
// Method 3: Perform a search using "Facebook"
@Test
public void peformSeachAndClick1stLink() {
driver.findElement(By.xpath(".//*[@title='Search']")).sendKeys("Facebook");
}
// Method 4: Verify Google search page title.
@Test
public void FaceBookPageTitleVerification() throws Exception {
driver.findElement(By.xpath(".//*[@value='Search']")).click();
Thread.sleep(3000);
Assert.assertEquals(driver.getTitle().contains("Facebook - Google Search"), true);
}
}
penjelasan dari Code
Seperti disebutkan di atas, kami telah membuat 4 kasus uji untuk melakukan setiap tindakan dalam metode independen.
- Metode pertama (buka Peramban) negara bagian untuk diinisialisasi Firefox Browser.
- Metode kedua (meluncurkanGoogle) negara bagian yang meluncurkan Google.com ada di browser yang sudah diinisialisasi.
- Metode ketiga (peformSeachAndClick1stLink)negara bagian yang melakukan pencarian di kotak pencarian (dengan xpath (โ.//*[@title='Penelusuran']โ) dengan istilah pencarian sebagai Facebook ke
- Cara keempat dan terakhir (Verifikasi JudulHalamanFaceBook) menyatakan bahwa klik ikon pencarian Google dan verifikasi bahwa judul browser telah diubah menjadi Facebook - Google Pencarian.
Sekarang jalankan kode ini menggunakan testNG seperti yang ditunjukkan dalam video, Anda akan menemukan semuanya Uji Kasus gagal. Alasan kegagalan: karena ada ketergantungan pada kasus uji sebelumnya yang harus dilewati, hanya kasus uji yang berjalan saat ini yang akan dilewati.
Di sini:
- Metode pertama yang dijalankan adalah bukaBrowser(). Itu dilewati karena tidak memiliki ketergantungan apa pun.
- Metode kedua yang dijalankan adalah FaceBookPageTitleVerification(); itu gagal karena kami mencoba mengklik tombol pencarian dan memverifikasi judul browser.
- Anda dapat melihat bahwa jika aktivitas pencarian tidak diproses, bagaimana langkah lainnya dapat dilewati. Oleh karena itu, inilah alasan kasus pengujian saya gagal.
PASSED: openBrowser FAILED: FaceBookPageTitleVerification FAILED: launchGoogle FAILED: peformSeachAndClick1stLink
Demo dari TestNG kode tanpa Prioritas dalam Urutan Abjad
Jika kami tidak menyebutkan prioritas apa pun, testng akan mengeksekusi metode @Test berdasarkan urutan abjad nama metodenya, terlepas dari tempat implementasinya dalam kode.
package com.guru.testngannotations;
import org.testng.annotations.Test;
public class TestNG_Priority_Annotations {
@Test
public void c_method(){
System.out.println("I'm in method C");
}
@Test
public void b_method(){
System.out.println("I'm in method B");
}
@Test
public void a_method(){
System.out.println("I'm in method A");
}
@Test
public void e_method(){
System.out.println("I'm in method E");
}
@Test
public void d_method(){
System.out.println("I'm in method D");
}
}
Keluaran
I'm in method A I'm in method B I'm in method C I'm in method D I'm in method E
Meskipun kami mendefinisikan metode secara acak (c, b, a, e, d), testng mengeksekusi metode berdasarkan nama metodenya dengan mempertimbangkan urutan abjad dan hal yang sama juga tercermin dalam keluarannya.
Cara mengatur Prioritas di TestNG
Seperti yang telah Anda lihat pada contoh sebelumnya bahwa pengurutan diperlukan untuk melewati skenario ini, jadi kami akan memodifikasi potongan kode sebelumnya dengan Parameter Prioritas sehingga setiap pengujian harus dijalankan bertentangan dengan prioritas yang diberikan kepadanya.
Sekarang seperti yang Anda lihat, kami telah menetapkan Prioritas untuk setiap kasus uji yang berarti kasus uji yang nilai prioritasnya lebih rendah akan dieksekusi terlebih dahulu.
Prioritas dalam testNG beraksi
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.Test;
public class Priority_In_testNG {
WebDriver driver;
// Method 1: Open Browser say Firefox
@Test (priority=1)
public void openBrowser() {
driver = new FirefoxDriver();
}
// Method 2: Launch Google.com
@Test (priority=2)
public void launchGoogle() {
driver.get("http://www.google.co.in");
}
// Method 3: Perform a search using "Facebook"
@Test (priority=3)
public void peformSeachAndClick1stLink() {
driver.findElement(By.xpath(".//*[@title='Search']")).sendKeys("Facebook");
}
// Method 4: Verify Google search page title.
@Test (priority=4)
public void FaceBookPageTitleVerification() throws Exception {
driver.findElement(By.xpath(".//*[@value='Search']")).click();
Thread.sleep(3000);
Assert.assertEquals(driver.getTitle().contains("Facebook - Google Search"), true);
}
}
penjelasan dari Code
Setelah menetapkan prioritas untuk setiap testcase, jalankan kode di atas menggunakan testNG seperti yang ditunjukkan dalam Video-2 yang disebutkan di bawah.
Di sini, Anda dapat melihat bahwa kasus uji diprioritaskan. Kasus uji yang memiliki prioritas lebih rendah dieksekusi terlebih dahulu, yaitu sekarang ada eksekusi berurutan sesuai prioritas dalam kasus uji tersebut. Oleh karena itu, semua kasus uji telah lulus sekarang.
Perhatikan konsol Eclipse:
Keluaran :
PASSED: openBrowser PASSED: launchGoogle PASSED: peformSearchAndClick1stLink PASSED: FaceBookPageTitleVerification
Angka 0 memiliki prioritas tertinggi (akan dieksekusi terlebih dahulu) dan prioritas berjalan berdasarkan angka yang diberikan yaitu, 0 memiliki prioritas tertinggi dari 1. 1 memiliki prioritas tertinggi dari 2 dan seterusnya.
package com.guru.testngannotations;
import org.testng.annotations.Test;
public class TestNG_Priority_Annotations {
@Test(priority=6)
public void c_method(){
System.out.println("I'm in method C");
}
@Test(priority=9)
public void b_method(){
System.out.println("I'm in method B");
}
@Test(priority=1)
public void a_method(){
System.out.println("I'm in method A");
}
@Test(priority=0)
public void e_method(){
System.out.println("I'm in method E");
}
@Test(priority=3)
public void d_method(){
System.out.println("I'm in method D");
}
}
Keluaran
I'm in method E I'm in method A I'm in method D I'm in method C I'm in method B
Di sini kami telah memberikan prioritas sebagai 0,1,3,6,9. Jadi, metode yang berprioritas 0 dieksekusi terlebih dahulu, baru kemudian metode yang berprioritas-1, dan seterusnya. Di sini nama metode urutan abjad tidak akan dipertimbangkan karena kami memberikan prioritasnya
Metode dengan Prioritas yang Sama
Mungkin ada kemungkinan bahwa metode memiliki prioritas yang sama. Dalam kasus tersebut, testng mempertimbangkan urutan abjad dari nama metode yang prioritasnya sama.
package com.guru.testngannotations;
import org.testng.annotations.Test;
public class TestNG_Priority_Annotations {
@Test(priority=6)
public void c_method(){
System.out.println("I'm in method C");
}
@Test(priority=9)
public void b_method(){
System.out.println("I'm in method B");
}
@Test(priority=6)
public void a_method(){
System.out.println("I'm in method A");
}
@Test(priority=0)
public void e_method(){
System.out.println("I'm in method E");
}
@Test(priority=3)
public void d_method(){
System.out.println("I'm in method D");
}
}
Keluaran
I'm in method E I'm in method D I'm in method A I'm in method C I'm in method B
Di sini 'e' dan 'd' dieksekusi berdasarkan nilai prioritasnya. Namun metode 'a' dan 'c' mengandung nilai prioritas yang sama (6). Jadi, di sini testng mempertimbangkan urutan abjad 'a' dan 'c' dan menjalankannya sesuai dengan itu.
Menggabungkan metode yang diprioritaskan (memiliki prioritas yang sama) dan tidak diprioritaskan
Dalam hal ini, kami akan membahas dua kasus dalam satu kelas pengujian.
- Metode memiliki nilai prioritas yang sama.
- Lebih dari satu metode yang tidak diprioritaskan.
package com.guru.testngannotations;
import org.testng.annotations.Test;
public class TestNG_Priority_Annotations {
@Test()
public void c_method(){
System.out.println("I'm in method C");
}
@Test()
public void b_method(){
System.out.println("I'm in method B");
}
@Test(priority=6)
public void a_method(){
System.out.println("I'm in method A");
}
@Test(priority=0)
public void e_method(){
System.out.println("I'm in method E");
}
@Test(priority=6)
public void d_method(){
System.out.println("I'm in method D");
}
}
Keluaran:
I'm in method B I'm in method C I'm in method E I'm in method A I'm in method D
PASSED: b_method PASSED: c_method PASSED: e_method PASSED: a_method PASSED: d_method
Penjelasan:
Preferensi pertama: Metode yang tidak diprioritaskan: 'c' dan 'b': Berdasarkan urutan abjad, 'b' dieksekusi terlebih dahulu, lalu 'c'.
Preferensi kedua: Metode yang diprioritaskan: 'a', 'e' dan 'd': 'e' dieksekusi terlebih dahulu karena memiliki prioritas tertinggi (0). Karena prioritas metode 'a' dan 'd' sama, pengujian mempertimbangkan urutan nama metode berdasarkan abjad. Jadi, di antara keduanya, 'a' dieksekusi terlebih dahulu, lalu 'd'.
Peka huruf besar-kecil di TestNG
Sekadar informasi Anda, ada sintaks standar untuk menentukan prioritas di testNG yaitu @Tes (prioritas=4), misalkan Anda mendefinisikannya dalam beberapa sintaksis lain @Tes (PRIORITAS=1) maka IDE Anda akan menampilkannya sebagai kesalahan kompilasi. Lihat gambar di bawah ini:
Kesimpulan
Seperti yang telah Anda lihat bahwa jika ada persyaratan untuk menjalankan serangkaian kasus uji dalam urutan tertentu maka hal itu dapat dengan mudah dilakukan menggunakan Prioritas menggunakan testNG sebagai alat jalankan.
Tutorial ini dimungkinkan karena kontribusi Ramandeep Singh dan Rama Krishna Gadde

