Tutorial TestNG: Apa itu, Anotasi & Kerangka di Selenium

Isi kandungan:

Anonim

Apa itu TestNG?

TestNG adalah kerangka ujian automasi di mana NG bermaksud "Next Generation". TestNG diilhamkan dari JUnit yang menggunakan anotasi (@). TestNG mengatasi kelemahan JUnit dan direka untuk memudahkan ujian akhir ke akhir.

Dengan menggunakan TestNG, anda dapat menghasilkan laporan yang tepat, dan anda dapat mengetahui dengan mudah berapa banyak kes ujian yang dilalui, gagal, dan dilangkau. Anda boleh menjalankan kes ujian yang gagal secara berasingan.

Sebagai contoh:

  • Katakanlah, anda mempunyai lima kes ujian, satu kaedah ditulis untuk setiap kes ujian (Anggap bahawa program ditulis menggunakan kaedah utama tanpa menggunakan testNG). Semasa anda menjalankan program ini terlebih dahulu, tiga kaedah berjaya dijalankan, dan kaedah keempat gagal. Kemudian betulkan kesalahan yang terdapat pada kaedah keempat, sekarang anda hanya ingin menjalankan kaedah keempat kerana tiga kaedah pertama berjaya dilaksanakan. Ini tidak mungkin dilakukan tanpa menggunakan TestNG.
  • TestNG di Selenium memberikan pilihan, iaitu fail testng-fail.xml dalam folder output-hasil. Sekiranya anda ingin menjalankan kes ujian yang gagal sahaja bermakna anda menjalankan fail XML ini. Ia hanya akan menjalankan kes ujian yang gagal.

Di samping konsep di atas, anda akan mempelajari lebih lanjut mengenai TestNG, seperti apa Kelebihan TestNG, bagaimana membuat kaedah ujian menggunakan anotasi @test, bagaimana menukar kelas ini menjadi fail suite pengujian dan melaksanakan melalui gerhana serta dari baris perintah .

Dalam tutorial TestNG ini, anda akan belajar

  • Mengapa Menggunakan TestNG dengan Selenium?
  • Kelebihan TestNG berbanding JUnit
  • Buat Uji Kes Menggunakan Anotasi TestNG
  • Cara Membuat Fail Ujian Test Baru
    • Pengkodan Contoh Kes UjianNG Ujian Pertama kami
    • Menjalankan Ujian
  • Menyemak laporan yang dibuat oleh TestNG
  • Anotasi yang digunakan dalam TestNG
  • Kes Ujian Pelbagai
  • Parameter
    • Pelbagai Parameter
    • Ringkasan Anotasi TestNG

Mengapa Menggunakan TestNG dengan Selenium?

Ujian Selenium lalai tidak menghasilkan format yang tepat untuk keputusan ujian. Dengan menggunakan TestNG di Selenium, kita dapat menghasilkan keputusan ujian.

Sebilangan besar pengguna Selenium menggunakan ini lebih banyak daripada Junit kerana kelebihannya. Terdapat begitu banyak ciri TestNG, tetapi kami hanya akan menumpukan pada yang paling penting yang boleh kami gunakan di Selenium. Berikut adalah ciri utama Selenium TestNG:

  • Hasilkan laporan dalam format yang tepat termasuk sejumlah kasus ujian berjalan, jumlah kes ujian yang dilalui, jumlah kes ujian gagal, dan jumlah kes ujian dilewati.
  • Pelbagai kes ujian dapat dikumpulkan dengan lebih mudah dengan menukarnya menjadi fail testng.xml. Di mana anda boleh membuat keutamaan kes ujian mana yang harus dijalankan terlebih dahulu.
  • Kes ujian yang sama dapat dijalankan berkali-kali tanpa gelung hanya dengan menggunakan kata kunci yang disebut 'invokasi count.'
  • Dengan menggunakan testng, anda dapat menjalankan beberapa kes ujian pada beberapa penyemak imbas, iaitu ujian lintas penyemak imbas.
  • Kerangka TestNG dapat disatukan dengan mudah dengan alat seperti TestNG Maven, Jenkins, dll.
  • Anotasi yang digunakan dalam ujian sangat mudah difahami seperti: @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest
  • WebDriver tidak mempunyai mekanisme asli untuk menghasilkan laporan. TestNG dapat menghasilkan laporan dalam format yang boleh dibaca seperti yang ditunjukkan di bawah.
  • TestNG mempermudah cara ujian dikodkan. Tidak ada lagi keperluan kaedah utama statik dalam ujian kami. Urutan tindakan diatur oleh anotasi yang mudah difahami yang tidak memerlukan kaedah menjadi statik.
  • Pengecualian yang tidak dapat ditangani dikendalikan secara automatik oleh TestNG tanpa menghentikan ujian sebelum waktunya. Pengecualian ini dilaporkan sebagai langkah gagal dalam laporan.

Kelebihan TestNG berbanding JUnit

Terdapat tiga kelebihan utama TestNG berbanding JUnit:

  • Anotasi lebih mudah difahami
  • Kes ujian dapat dikumpulkan dengan lebih mudah
  • Pengujian selari adalah mungkin

Anotasi dalam TestNG adalah garis kod yang dapat mengawal bagaimana kaedah di bawahnya akan dilaksanakan . Mereka selalu didahului dengan simbol @. Contoh TestNG yang sangat awal dan pantas adalah yang ditunjukkan di bawah.

Anotasi akan dibincangkan kemudian di bahagian bernama "Anotasi yang digunakan dalam TestNG," jadi sangat baik jika anda belum memahami Contoh TestNG di atas sebentar tadi. Penting untuk diperhatikan buat masa ini bahawa anotasi di TestNG lebih mudah dikod dan difahami daripada di JUnit.

Keupayaan untuk menjalankan ujian secara selari terdapat di TestNG tetapi tidak di JUnit, jadi kerangka TestNG lebih disukai penguji menggunakan Selenium Grid.

Buat Uji Kes Menggunakan Anotasi TestNG

Sekarang, kita akan belajar bagaimana membuat kes ujian pertama kita menggunakan Annotations TestNG di Selenium:

Sebelum membuat kes ujian, kita harus terlebih dahulu menyediakan Projek TestNG baru di Eclipse dan menamakannya sebagai "FirstTestNGProject".

Menyiapkan Projek TestNG baru

Langkah 1: Klik Fail> Baru> Projek Java

Langkah 2: Ketik "FirstTestNGProject" sebagai Nama Projek kemudian klik Seterusnya.

Langkah 3: Kami sekarang akan mula mengimport Perpustakaan TestNG ke projek kami. Klik pada tab "Perpustakaan", dan kemudian "Tambah Perpustakaan

... "

Langkah 4: Pada dialog Tambah Perpustakaan, pilih "TestNG" dan klik Seterusnya.

Langkah 5: Klik Selesai.

Anda harus perhatikan bahawa TestNG disertakan dalam senarai Perpustakaan.

Langkah 6: Kami sekarang akan menambahkan fail JAR yang mengandungi Selenium API. Fail-fail ini terdapat di pemacu klien Java yang kami muat turun dari http://docs.seleniumhq.org/download/ ketika kami memasang Selenium dan Eclipse pada bab sebelumnya.

Kemudian, arahkan ke tempat anda meletakkan fail Selenium JAR.

Setelah menambahkan JAR luaran, skrin anda akan kelihatan seperti ini.

Langkah 7: Klik Selesai dan sahkan bahawa FirstTestNGProject kami dapat dilihat pada tetingkap Eclipse's Package Explorer.

Cara Membuat Fail Ujian Test Baru

Setelah kita selesai menyiapkan projek kita dalam tutorial TestNG ini, mari kita buat fail TestNG baru.

Langkah 1: Klik kanan pada folder pakej "src" kemudian pilih Baru> Lain-lain

Langkah 2: Klik pada folder TestNG dan pilih pilihan "TestNG class". Klik Seterusnya.

Langkah 3: Taipkan nilai yang ditunjukkan di bawah ini pada kotak input yang sesuai dan klik Selesai. Perhatikan bahawa kami telah menamakan fail Java kami sebagai "FirstTestNGFile".

Eclipse akan membuat templat secara automatik untuk fail TestNG kami seperti di bawah.

Pengkodan Contoh Kes UjianNG Ujian Pertama kami

Mari kita buat Ujian Kes pertama kami yang akan memeriksa sama ada halaman utama Mercury Tours betul. Taipkan kod anda seperti yang ditunjukkan dalam Contoh TestNG di bawah:

pakej firsttestngpackage;import org.openqa.selenium. *;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations. *;firsttestngfile kelas awam {public String baseUrl = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";pemacu WebDriver awam;@ Ujiankekosongan awam mengesahkanSystem.out.println ("melancarkan penyemak imbas firefox");System.setProperty ("webdriver.gecko.driver", driverPath);driver = FirefoxDriver baru ();driver.get (baseUrl);Rentetan yang diharapkanTitle = "Selamat Datang: Mercury Tours";String sebenarnyaTitle = driver.getTitle ();Assert.assertEquals (sebenarTitle, diharapkanTitle);pemandu.tutup ();}}

Perhatikan perkara berikut.

  • TestNG tidak memerlukan anda mempunyai kaedah utama ().
  • Kaedah tidak perlu statik.
  • Kami menggunakan anotasi @Test. @Test digunakan untuk memberitahu bahawa kaedah di bawahnya adalah kes ujian . Dalam kes ini, kami telah menetapkan kaedah verifikasiHomepageTitle () sebagai kes ujian kami, jadi kami meletakkan anotasi '@Test' di atasnya.
  • Oleh kerana kami menggunakan anotasi dalam TestNG, kami perlu mengimport pakej org.testng.annotations. *.
  • Kami menggunakan kelas Assert. Kelas Assert digunakan untuk menjalankan operasi pengesahan di TestNG . Untuk menggunakannya, kita perlu mengimport pakej org.testng.Assert.

Anda mungkin mempunyai banyak kes ujian (oleh itu, banyak anotasi @Test) dalam satu fail TestNG. Ini akan ditangani dengan lebih terperinci kemudian di bahagian "Anotasi yang digunakan dalam TestNG."

Menjalankan Ujian

Untuk menjalankan ujian, jalankan fail di Eclipse seperti biasa. Eclipse akan memberikan dua output - satu di tetingkap Konsol dan yang lain pada tetingkap Hasil UjianNG.

Menyemak laporan yang dibuat oleh TestNG

Tetingkap Console di Eclipse memberikan laporan berdasarkan teks hasil kes ujian kami sementara tetingkap TestNG Results memberikan kita grafik.

Menghasilkan Laporan HTML

TestNG mempunyai kemampuan untuk menghasilkan laporan dalam format HTML.

Langkah 1: Setelah menjalankan FirstTestNGFile yang kami buat di bahagian sebelumnya, klik kanan nama projek (FirstTestNGProject) di tetingkap Project Explorer kemudian klik pada pilihan "Refresh".

Langkah 2: Perhatikan bahawa folder "test-output" telah dibuat. Kembangkannya dan cari fail index.html. Fail HTML ini adalah laporan hasil ujian terkini.

Langkah 3: Klik dua kali pada file index.html untuk membukanya dalam penyemak imbas web terbina dalam Eclipse. Anda boleh memuat semula halaman ini bila-bila masa selepas anda menjalankan ujian dengan hanya menekan F5 seperti pada penyemak imbas web biasa.

Anotasi yang digunakan dalam TestNG

Pada bahagian sebelumnya, anda telah diperkenalkan dengan anotasi @Test. Sekarang, kita akan mengkaji anotasi yang lebih maju dan penggunaannya.

Kes Ujian Pelbagai

Kami boleh menggunakan beberapa anotasi @Test dalam satu fail TestNG. Secara lalai, kaedah yang dijelaskan oleh @Test dijalankan mengikut abjad. Lihat kod di bawah. Walaupun metode c_test, a_test, dan b_test tidak disusun mengikut abjad dalam kod, mereka akan dijalankan seperti itu.

Jalankan kod ini dan pada halaman index.html yang dihasilkan, klik "Paparan kronologi."

Parameter

Sekiranya anda ingin kaedah dijalankan dalam urutan yang berbeda, gunakan parameter "priority". Parameter adalah kata kunci yang mengubah fungsi anotasi .

  • Parameter menghendaki anda memberikan nilai kepada mereka. Anda melakukannya.ini dengan meletakkan di sebelahnya, dan kemudian diikuti dengan nilai.
  • Parameter dilampirkan dalam sepasang tanda kurung yang diletakkan tepat selepas penjelasan seperti coretan kod yang ditunjukkan di bawah.

TestNG akan melaksanakan anotasi @Test dengan nilai keutamaan terendah hingga yang terbesar. Tidak perlu nilai keutamaan anda berturut-turut.

Laporan TestNG HTML akan mengesahkan bahawa kaedah dijalankan berdasarkan nilai keutamaan yang menaik.

Pelbagai Parameter

Selain "priority", @Test mempunyai parameter lain yang disebut "alwaysRun" yang hanya dapat disetel ke "true" atau "false." Untuk menggunakan dua atau lebih parameter dalam satu anotasi, pisahkan dengan koma seperti yang ditunjukkan di bawah.

@Test (keutamaan = 0, alwaysRun = true)

@BeforeTest dan @AfterTest

@BeforeTest

kaedah di bawah penjelasan ini akan dilaksanakan sebelum kes ujian pertama dalam fail TestNG .

@AfterTest

kaedah di bawah penjelasan ini akan dilaksanakan setelah semua kes ujian dalam fail TestNG dijalankan .

Pertimbangkan kod di bawah.

pakej firsttestngpackage;import org.openqa.selenium. *;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations. *;firsttestngfile kelas awam {public String baseUrl = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";pemacu WebDriver awam;@BeforeTestpelancaran kekosongan awamBrowser () {System.out.println ("melancarkan penyemak imbas firefox");System.setProperty ("webdriver.gecko.driver", driverPath);driver = FirefoxDriver baru ();driver.get (baseUrl);}@ Ujiankekosongan awam mengesahkanRentetan yang diharapkanTitle = "Selamat Datang: Mercury Tours";String sebenarnyaTitle = driver.getTitle ();Assert.assertEquals (sebenarTitle, diharapkanTitle);}@AfterTestpublic void terminateBrowser () {pemandu.tutup ();}}

Dengan menggunakan logik yang ditunjukkan oleh jadual dan kod di atas, kita dapat meramalkan bahawa urutan kaedah yang akan dijalankan adalah:

  • 1 st - launchBrowser ()
  • 2 nd - verifyHomepageTitle ()
  • 3 rd - terminateBrowser ()

Penempatan blok anotasi dapat ditukar tanpa mempengaruhi susunan kronologi di mana ia akan dilaksanakan . Mari fahami dengan Contoh TestNG dan cuba susun semula blok anotasi supaya kod anda kelihatan serupa dengan yang di bawah.

pakej firsttestngpackage;import org.openqa.selenium. *;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations. *;firsttestngfile kelas awam {public String baseUrl = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";pemacu WebDriver awam;@AfterTest // Tergamampublic void terminateBrowser () {pemandu.tutup ();}@BeforeTest // Tergamampelancaran kekosongan awamBrowser () {System.out.println ("melancarkan penyemak imbas firefox");System.setProperty ("webdriver.gecko.driver", driverPath);driver = FirefoxDriver baru ();driver.get (baseUrl);}@Test // Tergamamkekosongan awam mengesahkanRentetan yang diharapkanTitle = "Selamat Datang: Mercury Tours";String sebenarnyaTitle = driver.getTitle ();Assert.assertEquals (sebenarTitle, diharapkanTitle);}}

Jalankan kod di atas dan perhatikan bahawa

@BeforeMethod dan @AfterMethod

@Sebelumnya Kaedah

kaedah di bawah penjelasan ini akan dilaksanakan sebelum setiap kaedah dalam setiap kes ujian .

@AfterMode

kaedah di bawah penjelasan ini akan dilaksanakan setelah setiap kaedah dalam setiap kes ujian.

Di Mercury Tours, anggaplah kami ingin mengesahkan tajuk halaman sasaran dari dua pautan di bawah.

Aliran ujian kami adalah:

  • Pergi ke laman utama dan sahkan tajuknya.
  • Klik DAFTAR dan sahkan tajuk halaman sasarannya.
  • Kembali ke laman utama dan sahkan sama ada ia masih mempunyai tajuk yang betul.
  • Klik SOKONGAN dan sahkan tajuk halaman sasarannya.
  • Kembali ke laman utama dan sahkan sama ada ia masih mempunyai tajuk yang betul.

Kod di bawah menggambarkan bagaimana @BeforeMethod dan @AfterMethod digunakan untuk melaksanakan senario yang disebutkan di atas dengan cekap.

pakej firsttestngpackage;import org.openqa.selenium. *;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations. *;@ Ujianfirsttestngfile kelas awam {public String baseUrl = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";pemacu WebDriver awam;rentetan awam dijangkakan = null;public String sebenar = null;@BeforeTestpelancaran kekosongan awamBrowser () {System.out.println ("melancarkan penyemak imbas firefox");System.setProperty ("webdriver.gecko.driver", driverPath);driver = FirefoxDriver baru ();driver.get (baseUrl);}@Sebelumnya Kaedahkekosongan awam mengesahkanRentetan yang diharapkanTitle = "Selamat Datang: Mercury Tours";String sebenarnyaTitle = driver.getTitle ();Assert.assertEquals (sebenarTitle, diharapkanTitle);}@Test (keutamaan = 0)daftar tidak sah awam () {driver.findElement (By.linkText ("DAFTAR")). klik ();dijangka = "Daftar: Mercury Tours";sebenarnya = driver.getTitle ();Assert.assertEquals (sebenar, dijangka);}@Test (keutamaan = 1)sokongan awam tidak sah () {driver.findElement (By.linkText ("SOKONGAN")). klik ();dijangka = "Dalam Pembinaan: Mercury Tours";sebenarnya = driver.getTitle ();Assert.assertEquals (sebenar, dijangka);}@AfterModekekosongan awam goBackToHomepage () {driver.findElement (By.linkText ("Rumah")). klik ();}@AfterTestpublic void terminateBrowser () {pemandu.tutup ();}}

Setelah menjalankan ujian ini, TestNG anda harus melaporkan urutan berikut.

Ringkasnya, @BeforeMethod harus mengandungi kaedah yang anda perlukan untuk menjalankan sebelum setiap kes ujian manakala @AfterMethod harus mengandungi kaedah yang anda perlukan untuk menjalankan selepas setiap kes ujian.

Ringkasan Anotasi TestNG

@BeforeSuite : Kaedah anotasi akan dijalankan sebelum semua ujian di suite ini dijalankan.

@AfterSuite : Kaedah anotasi akan dijalankan setelah semua ujian di suite ini dijalankan.

@BeforeTest : Kaedah anotasi akan dijalankan sebelum kaedah ujian yang termasuk dalam kelas di dalam tag dijalankan.

@AfterTest : Kaedah anotasi akan dijalankan setelah semua kaedah ujian milik kelas di dalam tag telah dijalankan.

@BeforeGroups : Senarai kumpulan yang akan dijalankan kaedah konfigurasi ini sebelumnya. Kaedah ini dijamin akan dijalankan sejurus sebelum kaedah ujian pertama yang termasuk dalam kumpulan ini dipanggil.

@AfterGroups : Senarai kumpulan yang akan dijalankan oleh kaedah konfigurasi ini. Kaedah ini dijamin akan dijalankan sejurus selepas kaedah ujian terakhir yang termasuk dalam kumpulan ini dipanggil.

@BeforeClass : Kaedah anotasi akan dijalankan sebelum kaedah ujian pertama di kelas semasa dipanggil.

@AfterClass : Kaedah anotasi akan dijalankan setelah semua kaedah ujian dalam kelas semasa dijalankan.

@BeforeMethod : Kaedah anotasi akan dijalankan sebelum setiap kaedah ujian.

@AfterMetode : Kaedah anotasi akan dijalankan selepas setiap kaedah ujian.

@Test : Kaedah anotasi adalah sebahagian daripada kes ujian

Kesimpulannya

  • TestNG adalah kerangka ujian yang mampu menjadikan ujian Selenium lebih mudah difahami dan menghasilkan laporan yang mudah difahami.
  • Kelebihan utama TestNG berbanding JUnit adalah berikut.
    • Anotasi lebih senang digunakan dan difahami.
    • Kes ujian dapat dikumpulkan dengan lebih mudah.
    • TestNG membolehkan kita membuat ujian selari.
  • Tetingkap Konsol di Eclipse menghasilkan hasil berdasarkan teks sementara tetingkap TestNG lebih berguna kerana memberi kita output grafik hasil ujian ditambah dengan perincian lain yang bermakna seperti:
    • Masa jalan bagi setiap kaedah.
    • Urutan kronologi kaedah dijalankan
  • TestNG mampu menghasilkan laporan berdasarkan HTML.
  • Anotasi boleh menggunakan parameter seperti kaedah Java TestNG biasa.
  • TestNG Dataprovider adalah cara untuk memasukkan parameter ke dalam fungsi ujian yang memberikan nilai yang berbeza dalam kes ujian dalam satu pelaksanaan.