TestNG adalah framework Pengujian, 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 pengujian dalam kode Testng Anda.
Jika prioritas pengujian tidak ditentukan saat menjalankan beberapa kasus pengujian, TestNG menetapkan semua @Test prioritas sebagai nol (0).
Sekarang, sambil berlari; prioritas yang lebih rendah akan dijadwalkan terlebih dahulu.
Dalam tutorial ini, Anda akan belajar -
- Demo kode TestNG tanpa Prioritas
- Demo kode TestNG tanpa Prioritas dalam Urutan Abjad
- Cara mengatur Prioritas di TestNG
- Metode dengan Prioritas Sama
- Menggabungkan metode yang diprioritaskan (memiliki prioritas yang sama) dan tidak diprioritaskan
Demo kode TestNG tanpa Prioritas
Mari kita ambil skenario di mana pengurutan akan diperlukan untuk lulus semua kasus uji:
Skenario: Buat kode di mana Anda diminta untuk melakukan pencarian Google dengan kata kunci tertentu, katakanlah "Facebook". Sekarang, verifikasi bahwa judul Browser diubah menjadi "Facebook - Google Search".
Catatan: Setiap langkah yang Anda kodekan harus dalam metode terpisah
Metode 1 : Buka Peramban, katakan Firefox (openBrowser ())
Metode 2 : Luncurkan Google.com (launchGoogle ())
Metode 3 : Lakukan pencarian menggunakan "Facebook" (performSearchAndClick1stLink ())
Metode 4 : Verifikasi judul halaman pencarian Google (FaceBookPageTitleVerification ())
Kode untuk skenario kami :
import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;impor org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations.Test;public class Priority_In_testNG {Driver WebDriver;// Metode 1: Buka Peramban, katakanlah Firefox@Ujipublic void openBrowser () {driver = baru FirefoxDriver ();}// Metode 2: Luncurkan Google.com@Ujipublic void launchGoogle () {driver.get ("http://www.google.co.in");}// Metode 3: Lakukan pencarian menggunakan "Facebook"@Ujipublic void peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Search']")). sendKeys ("Facebook");}// Metode 4: Verifikasi judul halaman pencarian Google.@Ujipublic void FaceBookPageTitleVerification () melempar Exception {driver.findElement (By.xpath (".//*[@ value = 'Search']")). click ();Thread.sleep (3000);Assert.assertEquals (driver.getTitle (). Berisi ("Facebook - Pencarian Google"), benar);}}
Penjelasan Kode
Seperti disebutkan di atas, kami telah membuat 4 kasus uji untuk melakukan setiap tindakan dalam metode independen.
- Metode pertama (openBrowser) menyatakan untuk menginisialisasi browser Firefox.
- Metode kedua (launchGoogle) menyatakan bahwa peluncuran Google.com ada di browser yang diinisialisasi.
- Metode ketiga (peformSeachAndClick1stLink) menyatakan bahwa melakukan pencarian di kotak pencarian (dengan xpath (".//*[@title='Search ']") dengan istilah pencarian sebagai Facebook dan
- Metode keempat dan terakhir (FaceBookPageTitleVerification) menyatakan bahwa klik ikon pencarian Google dan verifikasi bahwa judul browser telah diubah menjadi Facebook - Pencarian Google.
Sekarang jalankan kode ini menggunakan testNG seperti yang ditunjukkan dalam video, Anda akan menemukan semua Test Case gagal. Alasan kegagalan: karena ada ketergantungan kasus uji sebelumnya yang harus dilalui, hanya kasus uji yang sedang berjalan yang akan diteruskan.
Pada kasus ini,
- Metode pertama yang dijalankan adalah openBrowser (). Itu lolos karena tidak memiliki ketergantungan apa pun.
- Metode kedua yang dijalankan adalah FaceBookPageTitleVerification (); gagal karena kami mencoba mengklik tombol cari dan memverifikasi judul browser.
- Anda dapat melihat bahwa jika aktivitas pencarian tidak diproses, lalu bagaimana langkah lain dapat dilewati. Oleh karena itu, inilah alasan kasus pengujian saya gagal.
LULUS: openBrowserGAGAL: FaceBookPageTitleVerificationGAGAL: launchGoogleGAGAL: peformSeachAndClick1stLink
Demo kode TestNG tanpa Prioritas dalam Urutan Abjad
Jika kami tidak menyebutkan prioritas apa pun, testng akan menjalankan metode @Test berdasarkan urutan abjad nama metode mereka terlepas dari tempat penerapannya dalam kode.
paket com.guru.testngannotations;import org.testng.annotations.Test;public class TestNG_Priority_Annotations {@Ujipublic void c_method () {System.out.println ("Saya dalam metode C");}@Ujipublic void b_method () {System.out.println ("Saya dalam metode B");}@Ujipublic void a_method () {System.out.println ("Saya dalam metode A");}@Ujipublic void e_method () {System.out.println ("Saya dalam metode E");}@Ujipublic void d_method () {System.out.println ("Saya dalam metode D");}}
Keluaran
Saya dalam metode ASaya dalam metode BSaya dalam metode CSaya dalam metode DSaya dalam metode E
Meskipun kami mendefinisikan metode secara acak (c, b, a, e, d), testng mengeksekusi metode berdasarkan nama metode mereka dengan mempertimbangkan urutan abjad dan hal yang sama juga tercermin dalam output.
Cara mengatur Prioritas di TestNG
Seperti yang Anda lihat pada contoh sebelumnya bahwa pengurutan diperlukan untuk melewati skenario ini, jadi kami akan memodifikasi bagian kode sebelumnya dengan Parameter Prioritas sehingga setiap pengujian harus dijalankan terhadap prioritas yang ditetapkan padanya.
Sekarang seperti yang Anda lihat, kami telah menetapkan Prioritas untuk setiap kasus uji berarti kasus uji akan nilai prioritas yang lebih rendah akan dieksekusi terlebih dahulu.
Prioritas dalam testNG dalam tindakan
import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;impor org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations.Test;public class Priority_In_testNG {Driver WebDriver;// Metode 1: Buka Peramban, katakanlah Firefox@Test (prioritas = 1)public void openBrowser () {driver = baru FirefoxDriver ();}// Metode 2: Luncurkan Google.com@Test (prioritas = 2)public void launchGoogle () {driver.get ("http://www.google.co.in");}// Metode 3: Lakukan pencarian menggunakan "Facebook"@Test (prioritas = 3)public void peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Search']")). sendKeys ("Facebook");}// Metode 4: Verifikasi judul halaman pencarian Google.@Test (prioritas = 4)public void FaceBookPageTitleVerification () melempar Exception {driver.findElement (By.xpath (".//*[@ value = 'Search']")). click ();Thread.sleep (3000);Assert.assertEquals (driver.getTitle (). Berisi ("Facebook - Pencarian Google"), benar);}}
Penjelasan Kode
Setelah menetapkan prioritas untuk setiap kasus uji, jalankan kode di atas menggunakan testNG seperti yang ditunjukkan dalam Video-2 yang disebutkan di bawah ini.
Di sini, Anda dapat melihat bahwa kasus pengujian diprioritaskan. Test case yang memiliki prioritas lebih rendah dieksekusi terlebih dahulu yaitu sekarang ada eksekusi berurutan sesuai prioritas pada test case tersebut. Oleh karena itu, semua kasus uji sudah lewat sekarang.
Perhatikan konsol gerhana:
Keluaran :
LULUS: openBrowserLULUS: launchGoogleLULUS: peformSearchAndClick1stLinkLULUS: FaceBookPageTitleVerification
Angka 0 memiliki prioritas tertinggi (akan dieksekusi terlebih dahulu) dan prioritas berjalan berdasarkan nomor yang diberikan yaitu 0 memiliki prioritas tertinggi dari 1. 1 memiliki prioritas tertinggi dari 2 dan seterusnya.
paket com.guru.testngannotations;import org.testng.annotations.Test;public class TestNG_Priority_Annotations {@Test (prioritas = 6)public void c_method () {System.out.println ("Saya dalam metode C");}@Test (prioritas = 9)public void b_method () {System.out.println ("Saya dalam metode B");}@Test (prioritas = 1)public void a_method () {System.out.println ("Saya dalam metode A");}@Test (prioritas = 0)public void e_method () {System.out.println ("Saya dalam metode E");}@Test (prioritas = 3)public void d_method () {System.out.println ("Saya dalam metode D");}}
Keluaran
Saya dalam metode ESaya dalam metode ASaya dalam metode DSaya dalam metode CSaya dalam metode B
Di sini kami telah memberikan prioritas sebagai 0,1,3,6,9. Jadi, metode yang memiliki prioritas 0 dijalankan terlebih dahulu kemudian metode yang memiliki prioritas-1 dan seterusnya. Di sini nama metode urutan abjad tidak akan dipertimbangkan karena kami memberikan prioritas
Metode dengan Prioritas Sama:
Mungkin ada kemungkinan bahwa metode mungkin berisi prioritas yang sama. Dalam kasus tersebut, testng mempertimbangkan urutan abjad dari nama metode yang prioritasnya sama.
paket com.guru.testngannotations;import org.testng.annotations.Test;public class TestNG_Priority_Annotations {@Test (prioritas = 6)public void c_method () {System.out.println ("Saya dalam metode C");}@Test (prioritas = 9)public void b_method () {System.out.println ("Saya dalam metode B");}@Test (prioritas = 6)public void a_method () {System.out.println ("Saya dalam metode A");}@Test (prioritas = 0)public void e_method () {System.out.println ("Saya dalam metode E");}@Test (prioritas = 3)public void d_method () {System.out.println ("Saya dalam metode D");}}
Keluaran
Saya dalam metode ESaya dalam metode DSaya dalam metode ASaya dalam metode CSaya dalam metode B
Di sini 'e' dan 'd' dieksekusi berdasarkan nilai prioritasnya. Tetapi metode 'a' dan 'c' berisi nilai prioritas yang sama (6). Jadi, di sini testng mempertimbangkan urutan abjad dari 'a' dan 'c' dan menjalankannya sesuai dengan itu.
Menggabungkan metode yang diprioritaskan (memiliki prioritas yang sama) dan tidak diprioritaskan:
Dalam kasus ini, kami akan membahas dua kasus dalam satu kelas pengujian.
- Metode yang memiliki nilai prioritas yang sama.
- Lebih dari satu metode yang tidak diprioritaskan.
paket com.guru.testngannotations;import org.testng.annotations.Test;public class TestNG_Priority_Annotations {@Uji()public void c_method () {System.out.println ("Saya dalam metode C");}@Uji()public void b_method () {System.out.println ("Saya dalam metode B");}@Test (prioritas = 6)public void a_method () {System.out.println ("Saya dalam metode A");}@Test (prioritas = 0)public void e_method () {System.out.println ("Saya dalam metode E");}@Test (prioritas = 6)public void d_method () {System.out.println ("Saya dalam metode D");}}
Keluaran:
Saya dalam metode BSaya dalam metode CSaya dalam metode ESaya dalam metode ASaya dalam metode D
LULUS: b_methodLULUS: c_methodLULUS: e_methodLULUS: a_methodLULUS: d_method
Penjelasan:
Preferensi pertama: Metode yang tidak diprioritaskan: 'c' dan 'b': Berdasarkan urutan abjad, 'b' dijalankan terlebih dahulu dan kemudian '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, testng mempertimbangkan urutan abjad dari nama metode mereka. Jadi, di antara mereka, 'a' dieksekusi terlebih dahulu dan kemudian 'd'.
Peka huruf besar / kecil di TestNG
Hanya untuk informasi Anda ada sintaks standar untuk menentukan prioritas di testNG yaitu @Test (prioritas = 4) , misalkan Anda mendefinisikannya dalam beberapa sintaks lain katakan @Test (PRIORITY = 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 sekumpulan kasus uji dalam urutan tertentu, maka hal itu dapat dengan mudah dilakukan menggunakan Prioritas menggunakan testNG sebagai alat yang dijalankan.
Tutorial ini dimungkinkan karena kontribusi Ramandeep Singh dan Rama Krishna Gadde