TestNG adalah kerangka pengujian, yang merangkumi pelbagai jenis reka bentuk ujian seperti ujian unit, ujian fungsional, ujian akhir ke akhir, ujian UI dan ujian integrasi.
Anda boleh menjalankan satu atau beberapa kes ujian dalam kod Testng anda.
Sekiranya keutamaan ujian tidak ditentukan semasa menjalankan beberapa kes ujian, TestNG memberikan semua keutamaan @Test sebagai sifar (0).
Sekarang, semasa berlari; keutamaan yang lebih rendah akan dijadualkan terlebih dahulu.
Dalam tutorial ini, anda akan belajar -
- Demo kod TestNG tanpa Keutamaan
- Demo kod TestNG tanpa Keutamaan dalam Susunan Abjad
- Cara menetapkan Keutamaan dalam TestNG
- Kaedah dengan Keutamaan yang Sama
- Menggabungkan kedua-dua kaedah yang diutamakan (mempunyai keutamaan yang sama) dan yang tidak diutamakan
Demo kod TestNG tanpa Keutamaan
Mari kita senario di mana urutan diperlukan untuk lulus semua kes ujian:
Senario: Hasilkan kod di mana anda diminta untuk melakukan carian Google dengan kata kunci tertentu mengatakan "Facebook". Sekarang, sahkan bahawa tajuk Penyemak Imbas diubah menjadi "Facebook - Carian Google".
Catatan: Setiap langkah yang anda kodkan harus menggunakan kaedah yang berasingan
Kaedah 1 : Buka Penyemak Imbas mengatakan Firefox (openBrowser ())
Kaedah 2 : Lancarkan Google.com (launchGoogle ())
Kaedah 3 : Lakukan carian menggunakan "Facebook" (performSearchAndClick1stLink ())
Kaedah 4 : Sahkan tajuk halaman carian Google (FaceBookPageTitleVerification ())
Kod untuk senario kami :
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;kelas awam Priority_In_testNG {Pemacu WebDriver;// Kaedah 1: Buka Brower katakan Firefox@ UjianopenBrowser tidak sah awam () {driver = FirefoxDriver baru ();}// Kaedah 2: Lancarkan Google.com@ Ujianpelancaran kekosongan awamGoogle () {driver.get ("http://www.google.co.in");}// Kaedah 3: Lakukan carian menggunakan "Facebook"@ Ujiankekosongan awam peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Search']")). sendKeys ("Facebook");}// Kaedah 4: Sahkan tajuk halaman carian Google.@ Ujiankekosongan awam FaceBookPageTitleVerification () membuang Pengecualian {driver.findElement (By.xpath (".//*[@ value = 'Search']")). klik ();Thread.sleep (3000);Assert.assertEquals (driver.getTitle (). Mengandungi ("Facebook - Carian Google"), benar);}}
Penjelasan Kod
Seperti yang disebutkan di atas, kami telah membuat 4 kes ujian untuk melakukan setiap tindakan dengan metode yang bebas.
- Kaedah pertama (openBrowser) menyatakan untuk memulakan penyemak imbas Firefox.
- Kaedah kedua (launchGoogle) menyatakan bahawa melancarkan Google.com adalah pada penyemak imbas yang dimulakan.
- Kaedah ketiga (peformSeachAndClick1stLink) menyatakan bahawa melakukan carian di kotak carian (dengan xpath (".//*[@title='Search ']") dengan istilah carian sebagai Facebook dan
- Kaedah keempat dan terakhir (FaceBookPageTitleVerification) menyatakan bahawa klik pada ikon carian Google dan mengesahkan bahawa tajuk penyemak imbas telah diubah menjadi Facebook - Carian Google.
Sekarang jalankan kod ini menggunakan testNG seperti yang ditunjukkan dalam video, anda akan mendapati semua Kes Kes gagal. Sebab kegagalan: kerana terdapat kebergantungan kes ujian sebelumnya untuk lulus, hanya dari kes ujian yang sedang berjalan yang akan dilalui.
Dalam kes ini,
- Kaedah pertama yang dilaksanakan adalah openBrowser (). Ia lulus kerana tidak mempunyai kebergantungan.
- Kaedah kedua yang dilaksanakan adalah FaceBookPageTitleVerification (); ia gagal kerana kami cuba mengklik butang carian dan mengesahkan tajuk penyemak imbas.
- Anda dapat melihat bahawa jika aktiviti carian tidak diproses, bagaimana langkah lain dapat dilalui. Oleh itu, inilah sebab kes ujian saya gagal.
LULUS: openBrowserGAGAL: Pengesahan FaceBookPageTitleGAGAL: launchGoogleGAGAL: peformSeachAndClick1stLink
Demo kod TestNG tanpa Keutamaan dalam Susunan Abjad
Sekiranya kami tidak menyebutkan keutamaan, testng akan melaksanakan kaedah @Test berdasarkan urutan abjad nama kaedahnya tanpa mengira tempat pelaksanaannya dalam kod tersebut.
pakej com.guru.testngannotations;import org.testng.annotations.Test;Ujian kelas awamNG_Priority_Anotations {@ Ujiankekosongan awam c_mode () {System.out.println ("Saya menggunakan kaedah C");}@ Ujiankekosongan awam b_mode () {System.out.println ("Saya menggunakan kaedah B");}@ Ujiankekosongan awam a_mode () {System.out.println ("Saya menggunakan kaedah A");}@ Ujiane_mode tidak sah awam () {System.out.println ("Saya menggunakan kaedah E");}@ Ujiankekosongan awam d_mode () {System.out.println ("Saya menggunakan kaedah D");}}
Pengeluaran
Saya menggunakan kaedah ASaya menggunakan kaedah BSaya menggunakan kaedah CSaya menggunakan kaedah DSaya menggunakan kaedah E
Meskipun kami mendefinisikan metode secara acak (c, b, a, e, d), testng menjalankan metode berdasarkan nama metode mereka dengan mempertimbangkan urutan abjad dan hal yang sama juga tercermin dalam output.
Cara menetapkan Keutamaan dalam TestNG
Seperti yang telah anda lihat dalam contoh sebelumnya bahawa penjujukan diperlukan untuk melewati senario ini, jadi kami akan mengubah seksyen kod sebelumnya dengan Priority Parameter sehingga setiap ujian harus berlawanan dengan prioritas yang diberikan kepada mereka.
Sekarang seperti yang anda lihat, kami telah menetapkan Keutamaan untuk setiap kes ujian bermaksud kes ujian akan nilai keutamaan yang lebih rendah akan dilaksanakan terlebih dahulu.
Keutamaan dalam ujianNG dalam tindakan
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;kelas awam Priority_In_testNG {Pemacu WebDriver;// Kaedah 1: Buka Penyemak Imbas mengatakan Firefox@Test (keutamaan = 1)openBrowser tidak sah awam () {driver = FirefoxDriver baru ();}// Kaedah 2: Lancarkan Google.com@Test (keutamaan = 2)pelancaran kekosongan awamGoogle () {driver.get ("http://www.google.co.in");}// Kaedah 3: Lakukan carian menggunakan "Facebook"@Test (keutamaan = 3)kekosongan awam peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Search']")). sendKeys ("Facebook");}// Kaedah 4: Sahkan tajuk halaman carian Google.@Test (keutamaan = 4)kekosongan awam FaceBookPageTitleVerification () membuang Pengecualian {driver.findElement (By.xpath (".//*[@ value = 'Search']")). klik ();Thread.sleep (3000);Assert.assertEquals (driver.getTitle (). Mengandungi ("Facebook - Carian Google"), benar);}}
Penjelasan Kod
Setelah memberikan keutamaan pada setiap kotak ujian, jalankan kod di atas menggunakan testNG seperti yang ditunjukkan dalam Video-2 yang disebutkan di bawah.
Di sini, anda dapat melihat bahawa kes ujian diutamakan. Kes ujian yang mempunyai keutamaan lebih rendah dilaksanakan terlebih dahulu iaitu sekarang ada pelaksanaan berurutan mengikut keutamaan dalam kes ujian. Oleh itu, semua kes ujian telah berlalu sekarang.
Perhatikan konsol gerhana:
Keluaran :
LULUS: openBrowserLULUS: launchGoogleLULUS: peformSearchAndClick1stLinkLULUS: Pengesahan FaceBookPageTitle
Nombor 0 mempunyai keutamaan tertinggi (ia akan dilaksanakan terlebih dahulu) dan keutamaan diteruskan berdasarkan nombor yang diberikan iaitu, 0 mempunyai keutamaan tertinggi daripada 1. 1 mempunyai keutamaan tertinggi daripada 2 dan seterusnya.
pakej com.guru.testngannotations;import org.testng.annotations.Test;Ujian kelas awamNG_Priority_Anotations {@Test (keutamaan = 6)kekosongan awam c_mode () {System.out.println ("Saya menggunakan kaedah C");}@Test (keutamaan = 9)kekosongan awam b_mode () {System.out.println ("Saya menggunakan kaedah B");}@Test (keutamaan = 1)kekosongan awam a_mode () {System.out.println ("Saya menggunakan kaedah A");}@Test (keutamaan = 0)e_mode tidak sah awam () {System.out.println ("Saya menggunakan kaedah E");}@Test (keutamaan = 3)kekosongan awam d_mode () {System.out.println ("Saya menggunakan kaedah D");}}
Pengeluaran
Saya menggunakan kaedah ESaya menggunakan kaedah ASaya menggunakan kaedah DSaya menggunakan kaedah CSaya menggunakan kaedah B
Di sini kami telah memberikan keutamaan sebagai 0,1,3,6,9. Oleh itu, kaedah yang mempunyai keutamaan 0 dilaksanakan terlebih dahulu dan kemudian kaedah yang mempunyai keutamaan-1 dan seterusnya. Di sini nama kaedah susunan abjad tidak akan dipertimbangkan kerana kami memberikan keutamaan
Kaedah dengan Keutamaan yang Sama:
Kemungkinan ada kaedah yang mengandungi keutamaan yang sama. Dalam kes tersebut, testng mempertimbangkan susunan abjad nama kaedah yang keutamaannya sama.
pakej com.guru.testngannotations;import org.testng.annotations.Test;Ujian kelas awamNG_Priority_Anotations {@Test (keutamaan = 6)kekosongan awam c_mode () {System.out.println ("Saya menggunakan kaedah C");}@Test (keutamaan = 9)kekosongan awam b_mode () {System.out.println ("Saya menggunakan kaedah B");}@Test (keutamaan = 6)kekosongan awam a_mode () {System.out.println ("Saya menggunakan kaedah A");}@Test (keutamaan = 0)e_mode tidak sah awam () {System.out.println ("Saya menggunakan kaedah E");}@Test (keutamaan = 3)kekosongan awam d_mode () {System.out.println ("Saya menggunakan kaedah D");}}
Pengeluaran
Saya menggunakan kaedah ESaya menggunakan kaedah DSaya menggunakan kaedah ASaya menggunakan kaedah CSaya menggunakan kaedah B
Di sini 'e' dan 'd' dilaksanakan berdasarkan nilai keutamaan mereka. Tetapi kaedah 'a' dan 'c' mengandungi nilai keutamaan yang sama (6). Jadi, di sini testng mempertimbangkan susunan abjad 'a' dan 'c' dan melaksanakannya dengan sewajarnya.
Menggabungkan kedua-dua kaedah yang diutamakan (mempunyai keutamaan yang sama) dan yang tidak diutamakan:
Dalam kes ini, kami akan merangkumi dua kes dalam satu kelas testng.
- Kaedah yang mempunyai nilai keutamaan yang sama.
- Lebih daripada satu kaedah tidak diutamakan.
pakej com.guru.testngannotations;import org.testng.annotations.Test;Ujian kelas awamNG_Priority_Anotations {@ Ujian ()kekosongan awam c_mode () {System.out.println ("Saya menggunakan kaedah C");}@ Ujian ()kekosongan awam b_mode () {System.out.println ("Saya menggunakan kaedah B");}@Test (keutamaan = 6)kekosongan awam a_mode () {System.out.println ("Saya menggunakan kaedah A");}@Test (keutamaan = 0)e_mode tidak sah awam () {System.out.println ("Saya menggunakan kaedah E");}@Test (keutamaan = 6)kekosongan awam d_mode () {System.out.println ("Saya menggunakan kaedah D");}}
Pengeluaran:
Saya menggunakan kaedah BSaya menggunakan kaedah CSaya menggunakan kaedah ESaya menggunakan kaedah ASaya menggunakan kaedah D
LULUS: kaedah b_LULUS: kaedah c_LULUS: kaedah e_LULUS: a_modeLULUS: d_mode
Penjelasan:
Keutamaan pertama: Kaedah tidak diutamakan: 'c' dan 'b': Berdasarkan susunan abjad 'b' dilaksanakan terlebih dahulu dan kemudian 'c'.
Keutamaan kedua: Kaedah yang diutamakan: 'a', 'e' dan 'd': 'e' dilaksanakan terlebih dahulu kerana mempunyai keutamaan tertinggi (0). Oleh kerana keutamaan kaedah 'a' dan 'd' adalah sama, testng mempertimbangkan susunan abjad nama kaedah mereka. Jadi, di antara mereka, 'a' dilaksanakan terlebih dahulu dan kemudian 'd'.
Peka kes dalam TestNG
Sekadar maklumat anda, ada sintaks standard untuk menentukan keutamaan dalam testNG iaitu @Test (priority = 4) , andaikan anda mendefinisikannya dalam beberapa sintaks lain katakan @Test (PRIORITY = 1) maka IDE anda akan menunjukkannya sebagai kesalahan kompilasi . Rujuk gambar di bawah:
Kesimpulan:
Seperti yang telah anda ketahui bahawa jika ada syarat untuk menjalankan satu set case-case dalam urutan tertentu, maka dapat dilakukan dengan mudah menggunakan Priority menggunakan testNG sebagai alat lari.
Tutorial ini dimungkinkan kerana sumbangan Ramandeep Singh dan Rama Krishna Gadde