TestNG Pendengar di Selenium: Contoh ITestListener & ITestResult
Ada dua pendengar utama.
- Pendengar WebDriver
- TestNG Pendengar
Pada tutorial kali ini kita akan membahas tentang Pengujian Pendengar.
Apa yang dimaksud dengan Pendengar TestNG?
Pendengar didefinisikan sebagai antarmuka yang mengubah default TestNGPerilaku. Seperti namanya, Listener “mendengarkan” peristiwa yang didefinisikan dalam skrip selenium dan berperilaku sesuai dengannya. Ini digunakan dalam selenium dengan mengimplementasikan Antarmuka Listener. Ini memungkinkan penyesuaian TestNG laporan atau log. Ada banyak jenis TestNG pendengar tersedia.
Jenis Pendengar di TestNG
Ada banyak jenis pendengar yang memungkinkan Anda mengubah TestNGperilakunya.
Di bawah ini adalah beberapa di antaranya TestNG pendengar:
- IAnnotationTransformer,
- IAnnotationTransformer2,
- Dapat dikonfigurasi,
- IConfigurationListener,
- IExecutionListener,
- saya dapat di kaitkan ,
- IInvokedMethodListener ,
- IInvokedMethodListener2 ,
- Metode Interceptor,
- SayaReporter,
- Pendengar ISuite,
- Pendengar ITest.
Antarmuka di atas disebut TestNG Pendengar. Antarmuka ini digunakan dalam selenium untuk menghasilkan log atau menyesuaikan TestNG laporan.
Dalam tutorial ini, kita akan mengimplementasikan ITestListener.
ITestListener memiliki metode berikut
- DiMulai- Metode OnStart dipanggil ketika Tes dimulai.
- pada TesSukses- Metode onTestSuccess dipanggil jika Tes apa pun berhasil.
- pada TestFailure- Metode onTestFailure dipanggil jika Tes apa pun gagal.
- padaTesDilewatkan- Metode onTestSkipped dipanggil saat Tes apa pun dilewati.
- onTestFailedButWithinSuccessPercentage- metode dipanggil setiap kali Tes gagal tetapi berada dalam persentase keberhasilan.
- di Selesai- Metode onFinish dipanggil setelah semua Tes dijalankan.
Skenario Uji
Dalam skenario pengujian ini, kami akan mengotomatiskan proses Login dan mengimplementasikan 'ItestListener'.
- Peluncuran Firefox dan buka situsnya https://demo.guru99.com/V4/
- Masuk ke aplikasi.
Langkah-langkah membuat a TestNG Pendengar
Untuk skenario pengujian di atas, kami akan mengimplementasikan Listener.
Langkah 1) Buat kelas “ListenerTest” yang mengimplementasikan 'ITestListener'. Gerakkan mouse ke atas teks garis merah, dan Eclipse akan menyarankan Anda 2 perbaikan cepat seperti yang ditunjukkan pada layar di bawah ini:
Cukup klik “Tambahkan metode yang belum diterapkan”. Beberapa metode yang tidak diterapkan (tanpa isi) ditambahkan ke kode. Periksa di bawah-
package Listener_Demo; import org.testng.ITestContext ; import org.testng.ITestListener ; import org.testng.ITestResult ; public class ListenerTest implements ITestListener { @Override public void onFinish(ITestContext arg0) { // TODO Auto-generated method stub } @Override public void onStart(ITestContext arg0) { // TODO Auto-generated method stub } @Override public void onTestFailedButWithinSuccessPercentage(ITestResult arg0) { // TODO Auto-generated method stub } @Override public void onTestFailure(ITestResult arg0) { // TODO Auto-generated method stub } @Override public void onTestSkipped(ITestResult arg0) { // TODO Auto-generated method stub } @Override public void onTestStart(ITestResult arg0) { // TODO Auto-generated method stub } @Override public void onTestSuccess(ITestResult arg0) { // TODO Auto-generated method stub } }
Mari kita modifikasi kelas 'ListenerTest'. Secara khusus, kita akan memodifikasi metode berikut-
onTestFailure, onTestSkipped, onTestStart, onTestSuccess, etc.
Modifikasinya sederhana. Kami hanya mencetak nama Tesnya.
Log dibuat di konsol. Mudah bagi pengguna untuk memahami tes mana yang berstatus lulus, gagal, dan dilewati.
Setelah dimodifikasi, kodenya terlihat seperti-
package Listener_Demo; import org.testng.ITestContext; import org.testng.ITestListener; import org.testng.ITestResult; public class ListenerTest implements ITestListener { @Override public void onFinish(ITestContext Result) { } @Override public void onStart(ITestContext Result) { } @Override public void onTestFailedButWithinSuccessPercentage(ITestResult Result) { } // When Test case get failed, this method is called. @Override public void onTestFailure(ITestResult Result) { System.out.println("The name of the testcase failed is :"+Result.getName()); } // When Test case get Skipped, this method is called. @Override public void onTestSkipped(ITestResult Result) { System.out.println("The name of the testcase Skipped is :"+Result.getName()); } // When Test case get Started, this method is called. @Override public void onTestStart(ITestResult Result) { System.out.println(Result.getName()+" test case started"); } // When Test case get passed, this method is called. @Override public void onTestSuccess(ITestResult Result) { System.out.println("The name of the testcase passed is :"+Result.getName()); } }
Langkah 2) Buat kelas lain “TestCases” untuk otomatisasi proses login. Selenium akan menjalankan 'TestCases' ini untuk login secara otomatis.
package Listener_Demo; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.Assert; import org.testng.annotations.Listeners; Import org.testng.annotations.Test; public class TestCases { WebDriver driver= new FirefoxDriver(); // Test to pass as to verify listeners . @Test public void Login() { driver.get("https://demo.guru99.com/V4/"); driver.findElement(By.name("uid")).sendKeys("mngr34926"); driver.findElement(By.name("password")).sendKeys("amUpenu"); driver.findElement(By.name("btnLogin")).click(); } // Forcefully failed this test as to verify listener. @Test public void TestToFail() { System.out.println("This method to test fail"); Assert.assertTrue(false); } }
Langkah 3) Selanjutnya, implementasikan pendengar ini di kelas proyek reguler kami yaitu “TestCases”. Ada dua cara berbeda untuk terhubung ke kelas dan antarmuka.
Cara pertama adalah dengan menggunakan anotasi Listeners (@Listeners) seperti yang ditunjukkan di bawah ini:
@Listeners(Listener_Demo.ListenerTest.class)
Kami menggunakan ini di kelas “TestCases” seperti yang ditunjukkan di bawah ini.
Jadi akhirnya kelas "TestCases" terlihat setelah menggunakan anotasi Listener:
package Listener_Demo; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.Assert; import org.testng.annotations.Listeners; import org.testng.annotations.Test; @Listeners(Listener_Demo.ListenerTest.class) public class TestCases { WebDriver driver= new FirefoxDriver(); //Test to pass as to verify listeners. @Test public void Login() { driver.get("https://demo.guru99.com/V4/"); driver.findElement(By.name("uid")).sendKeys("mngr34926"); driver.findElement(By.name("password")).sendKeys("amUpenu"); driver.findElement(By.id("")).click(); } //Forcefully failed this test as verify listener. @Test public void TestToFail() { System.out.println("This method to test fail"); Assert.assertTrue(false); } }
Struktur proyek terlihat seperti:
Langkah 4): Jalankan kelas “TestCases”. Metode di kelas “ListenerTest” dipanggil secara otomatis sesuai dengan perilaku metode yang dianotasi sebagai @Test.
Langkah 5): Verifikasi Output yang ditampilkan log di konsol.
Output dari 'TestCases' akan terlihat seperti ini:
[TestNG] Running: C:\Users\gauravn\AppData\Local\Temp\testng-eclipse--1058076918\testng-customsuite.xml Login Test Case started The name of the testcase passed is:Login TestToFail test case started This method to test fail The name of the testcase failed is:TestToFail PASSED: Login FAILED: TestToFail java.lang.AssertionError: expected [true] but found [false]
Penggunaan Pendengar untuk beberapa kelas.
Jika proyek memiliki beberapa kelas, menambahkan Listener ke masing-masing kelas dapat menjadi rumit dan rawan kesalahan.
Dalam kasus seperti itu, kita dapat membuat testng.xml dan menambahkan tag pendengar dalam XML.
Listener ini diterapkan di seluruh rangkaian pengujian, berapa pun jumlah kelas yang Anda miliki. Saat Anda menjalankan file XML ini, pendengar akan bekerja pada semua kelas yang disebutkan. Anda juga dapat mendeklarasikan sejumlah kelas pendengar.
Ringkasan
Pendengar diharuskan membuat log atau menyesuaikan TestNG laporan masuk Selenium driver web.
- Ada banyak jenis pendengar dan dapat digunakan sesuai kebutuhan.
- Pendengar adalah antarmuka yang digunakan dalam skrip driver web selenium
- Mendemonstrasikan penggunaan Listener di Selenium
- Menerapkan Pendengar untuk beberapa kelas