Grup di TestNG
โก Ringkasan Cerdas
Grup di TestNG Memungkinkan Anda memberi tag pada metode pengujian dengan label logis, lalu menyertakan atau mengecualikannya melalui rangkaian XML. Pendekatan ini menyederhanakan pengujian smoke test, regresi, dan pengujian berbasis dependensi tanpa perlu menulis ulang kode. Java kode.
TestNG adalah kerangka kerja pengujian yang mencakup pengujian unit, fungsional, ujung-ke-ujung, UI, dan integrasi untuk Java proyek.
Anda dapat menjalankan satu paket atau banyak paket (sebuah paket merangkum kelas-kelas terkait dalam tata letak direktori yang ditentukan) dengan membuat rangkaian XML dan memicunya melalui Maven.
TestNG Kelompok dengan Contoh
Anda menggunakan grup di TestNG kapan:
- Anda tidak ingin menyebarkan metode pengujian ke banyak kelas hanya berdasarkan area fungsional, dan
- Anda ingin melewati (tidak menjalankan) kasus uji terpilih seolah-olah kasus uji tersebut tidak ada dalam basis kode.
- Untuk mencapai kedua tujuan tersebut, Anda mengelompokkan metode ke dalam grup-grup logis. TestNG lalu menghormati filter โincludeโ dan โexcludeโ yang dideklarasikan dalam rangkaian XML.
Cuplikan di bawah ini menunjukkan sintaks penandaan grup yang digunakan pada metode pengujian.
Dua nama grup digunakan di sini, yaitu bonding ke strong_tiesIni adalah label logis yang dapat Anda ganti namanya agar sesuai dengan proyek Anda.
The <groups> Tag ini menandai awal filter grup di dalam rangkaian XML.
Kemudian Anda menyesuaikan XML untuk memilih grup yang diinginkan dari kelas yang diberi tag. Contoh di bawah ini menunjukkan sintaks deklarasi grup.
<menjalankan>
<memasukkan nama="ikatan" />
</menjalankan>
</kelompok>
Misalkan sebuah kelas tunggal berisi 10 metode pengujian.
Dari metode-metode tersebut:
- 6 metode membawa
bondingkelompok, dan - 4 metode membawa
strong_tieskelompok.
Selanjutnya, Anda menyiapkan Maven dan Java jalur dan gunakan Eclipse IDE untuk mendemonstrasikan penggunaan grup melalui file XML di dalam sebuah JavaProyek berbasis Maven.
Buat XML untuk TestNG dengan tanda
- File XML (Extensible Markup Language) dalam kerangka kerja Maven menyimpan konfigurasi untuk satu atau lebih pengujian, yang dideklarasikan di dalam menandai.
- Setiap entri uji dibungkus dalam sebuah label dan dapat menampung satu atau lebih TestNG kelas.
- A Java kelas dengan satu atau lebih @Uji anotasi pada metodenya diperlakukan sebagai TestNG kelas.
Beberapa tag muncul secara berurutan untuk membangun file testng.xml yang berfungsi, yaitu , , Dan .
- The tag tersebut menyimpan nama tingkat suite yang digunakan dalam TestNG laporan ringkasan eksekusi.
- The <test name=โGuru Demo Uji Asap 99โ> Tag tersebut berisi nama pengujian logis; laporan menggunakannya untuk menghitung jumlah pengujian yang lulus, gagal, dan dilewati, serta total waktu eksekusi dan metadata grup.
- The tag menunjuk ke kelas pengujian, di mana
com.group.guru99adalah paket danTC_Class1adalah nama kelas.
<!DOCTYPE rangkaian PELACAKAN PENGIRIMAN โhttp://testng.org/testng-1.0.dtdโ>
<rangkaian nama=โSuiteโ>
<uji nama="Guru Demo Uji Asap 99โ>
<kelompok>
<menjalankan>
<memasukkan nama=โikatan_kuatโ />
</menjalankan>
</kelompok>
<kelas-kelas>
<kelas nama=โcom.group.guru99.TC_Class1โ />
</kelas-kelas>
</uji>
</rangkaian>
Konfigurasi XML ini dirujuk dalam panduan video di bagian selanjutnya.
"kecualikan" atau "sertakan" dalam XML pengujian
Jika mekanisme pengelompokan terasa terlalu berat untuk filter kecil, rangkaian testng.xml juga memungkinkan Anda untuk mengecualikan atau menyertakan metode pengujian individual berdasarkan nama.
Sertakan TagSintaks untuk tag includememasukkan nama=โ${TEST_CASE_NAME}โ />
Catatan: Anda dapat menyertakan atau mengecualikan banyak kasus uji dalam satu kali proses, dan sintaks yang sama berlaku untuk filter grup.
Menggunakan dependsOnGroups untuk Eksekusi Berurutan
Lebih dari sekadar inklusi, TestNG memungkinkan satu kelompok bergantung pada kelompok lain dengan menggunakan dependsOnGroups atribut. Runner memastikan setiap metode dalam grup induk selesai sebelum metode dependen dimulai, yang menjaga prasyarat tetap andal.
- Login terlebih dahulu, kemudian transaksi: Beri tag pada metode login dengan
group = "auth", dan tes transfer tag dengandependsOnGroups = {"auth"}Tes transfer hanya dijalankan setelah proses login berhasil. - Lewati jika gagal: Jika suatu metode dalam grup induk gagal, TestNG menandai metode dependen sebagai dilewati alih-alih langsung menggagalkannya, yang menjaga keakuratan laporan.
- Kombinasikan dengan alwaysRun: Metode pembersihan harus diatur
alwaysRun = trueJadi, proses pembongkaran tetap berjalan meskipun grup hulu mengalami kegagalan.
Pola ini umum terjadi pada rangkaian pengujian ujung-ke-ujung di mana pengaturan API harus selesai sebelum pernyataan UI dijalankan.
Run TestNG Kelompokkan, sertakan, kecualikan kode (demo video)
Berikut adalah panduan langkah demi langkah Java kode dan rangkaian XML yang menggerakkan mengelompokkan, mengecualikan, dan memasukkan tingkah laku.
Skenario Uji: Peluncuran GuruDi situs perbankan demo 99, verifikasi beberapa elemen di halaman login, masukkan kredensial, dan verifikasi ulang beberapa item di dasbor setelah login.
Catatan: Setiap langkah berada dalam metodenya masing-masing, tetapi pada saat runtime urutannya bergantung pada entri dalam rangkaian XML.
- Metode 1: Inisialisasi browser dan luncurkan URL (
tc01LaunchURL()). - Metode 2: Periksa judul halaman login (
tc02VerifyLaunchPage()). - Metode 3: Masukkan nama pengguna dan kata sandi pada formulir login (
tc03EnterCredentials()). - Metode 4: Verifikasi keberadaan ID Manajer di dasbor pengguna (
tc04VerifyLoggedInPage()). - Metode 5: Periksa tautan tambahan di dasbor pengguna (
tc05VerifyHyperlinks()).
Code untuk skenario ini:
mengimpor java.util.bersamaan.TimeUnit;
mengimpor org.openqa.selenium.By;
mengimpor org.openqa.selenium.WebDriver;
mengimpor org.openqa.selenium.firefox.FirefoxPengemudi;
mengimpor org.testng.Assert;
mengimpor org.testng.annotations.Test;
kelas umum Kelas_TC1 {
publik statis akhir webdriver webDriver = yang baru Firefoxsopir();
String launchPageHeading = โ//h3[text()='Guru99 Bank']โ;
terakhir String userName_element = โ//input[@name='uid']โ, password_element = โ//masukkan[@name='kata sandi']โ,
elemen_masuk = โ//input[@name='btnLogin']โ;
terakhir String userName_value = โmngr28642โ, nilai_kata_sandi = โydAnateโ;
terakhir String managerID = โ//td[contains(text(),'ID Manajer')]โ;
terakhir String Pelanggan baru = โ//a[@href='addcustomerpage.php']โ, transfer dana = โ//a[@href='FundTransInput.php']โ;
/** Kasus uji ini menginisialisasi webDriver */
@Uji(kelompok = { "ikatan", โikatan_kuatโ })
kekosongan publik tc01LaunchURL() {
webDriver.manage().window().maximize();
webDriver.manage().timeouts().implicitlyWait(20, Satuan Waktu.DETIK);
webDriver.get(โhttps://www.demo.guru99.com/V4/โ);
}
/** Memeriksa keberadaan judul pada halaman login */
@Uji(kelompok = { "ikatan" })
kekosongan publik tc02VerifyLaunchPage() {
Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(),
โJudul Halaman Utama tidak ditampilkanโ);
Sistem.keluar.println(โJudul Halaman Utama ditampilkanโ);
}
/** Masukkan nama pengguna, kata sandi, lalu klik masuk */
@Uji(kelompok = { "ikatan", โikatan_kuatโ })
kekosongan publik tc03MasukkanKredensial() {
webDriver.findElement(By.xpath(userName_element)).sendKeys(userName_value);
webDriver.findElement(By.xpath(password_element)).sendKeys(password_value);
webDriver.findElement(By.xpath(signIn_element)).click();
}
/** Memverifikasi ID manajer di dasbor */
@Uji(kelompok = { โikatan_kuatโ })
kekosongan publik tc04VerifyLoggedInPage() {
Assert.assertTrue(webDriver.findElement(By.xpath(managerID)).isDisplayed(),
โLabel ID Manajer tidak ditampilkanโ);
Sistem.keluar.println(โLabel ID Manajer ditampilkanโ);
}
/** Memeriksa tautan pelanggan baru dan tautan transfer dana di dasbor */
@Uji(kelompok = { "ikatan" })
kekosongan publik tc05VerifyHyperlinks() {
Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(),
โHyperlink pelanggan baru tidak ditampilkanโ);
Sistem.keluar.println(โHyperlink pelanggan baru ditampilkanโ);
Assert.assertTrue(webDriver.findElement(By.xpath(fundTransfer)).isEnabled(),
โHyperlink Transfer Dana tidak ditampilkanโ);
Sistem.keluar.println(โTautan transfer dana ditampilkanโ);
}
}
Harap diperhatikan: kredensial perbankan demo tetap berlaku selama kurang lebih 20 hari, jadi saat dijalankan secara lokal mungkin akan muncul kesalahan kredensial tidak valid setelah jangka waktu tersebut berakhir.
Penjelasan kodenya:
Lima metode pengujian, satu per tindakan, masing-masing membawa groups atribut pada @Test anotasi.
Dua label grup logis tersebut adalah strong_ties ke bonding.
- Metode pertama dan ketiga membawa keduanya.
bondingkestrong_tiesJadi, keduanya akan berjalan setiap kali salah satu grup disertakan dalam rangkaian. Ini adalah pola umum untuk penggunaan bersama. Kasus cobaan tangga. - Metode kedua hanya diberi tag dengan
bonding, jadi hanya berjalan saatbondingGrup tersebut termasuk. - Metode keempat hanya diberi tag dengan
strong_ties, jadi program ini hanya berjalan jika grup tersebut disertakan. - Metode kelima hanya diberi tag dengan
bonding, jadi hanya berjalan saatbondingGrup tersebut termasuk.
Berikut empat skenario eksekusi:
Skenario 1: Jalankan setiap metode pengujian tanpa memandang grup. Hapus <groups> blok dari XML yang sedang berjalan.
Skenario 2: Hanya jalankan metode yang terkait dengan grup yang dipilih, yaitu strong_ties or bondingSilakan lihat video di bawah ini.
- Di bagian pertama video tersebut,
<groups>Blok kode tersebut dikomentari, sehingga setiap metode pengujian akan dijalankan. - Pada bagian kedua, filter grup dipulihkan, dan hanya metode yang cocok yang dijalankan.
Skenario 3: Gunakan filter pengecualian untuk melewati kasus uji yang dipilih. Silakan lihat videonya.
- Demo ini tidak termasuk
tc02berdasarkan nama dalam XML yang sedang berjalan, dan laporan hasil mengkonfirmasi bahwa metode yang dikecualikan tidak berjalan.
Skenario 4: Terapkan filter penyertaan untuk hanya menjalankan tc01LaunchURL, tc03EnterCredentials, dan tc05VerifyHyperlinksSilakan lihat video tersebut.
Pada eksekusi ini, hanya metode yang tercantum dalam filter include yang dijalankan, persis seperti yang dikonfigurasi.
Unduh contoh proyek dari tautan di bawah ini.
Kesimpulan
Grup di TestNG memberikan struktur pada hal yang besar Selenium dan rangkaian unit dengan mengganti pemisahan kelas satu kali dengan filter XML deklaratif.
Beri tag pada metode Anda dengan @Test(groups = {...}), lalu gunakan <include>, <exclude>, dan dependsOnGroups untuk menjalankan pengujian asap (smoke test), regresi, dan pengujian ujung-ke-ujung (end-to-end test) dari proyek Maven yang sama. TestNG 7.x.


