TestNG Dinleyiciler Selenium: ITestListener ve ITestResult Örneği
İki ana dinleyici var.
- WebDriver Dinleyicileri
- TestNG Dinleyiciler
Bu eğitimde şunları tartışacağız: Test Dinleyiciler.
Dinleyiciler Nedir? TestNG?
Dinleyici, varsayılanı değiştiren arayüz olarak tanımlanır TestNG'nin davranışı. Adından da anlaşılacağı gibi, Dinleyiciler Selenium betiğinde tanımlanan olayı "dinler" ve buna göre davranır. Selenium'da Dinleyiciler Arayüzü uygulanarak kullanılır. Özelleştirmeye izin verir TestNG raporlar veya günlükler. Birçok türü var TestNG dinleyiciler mevcuttur.
Dinleyici Türleri TestNG
değiştirmenize izin veren birçok dinleyici türü vardır. TestNGdavranışı.
Aşağıda birkaçı var TestNG dinleyiciler:
- IAnnotationTransformer,
- IAnnotationTransformer2 ,
- Yapılandırılabilir,
- IConfigurationListener ,
- IExecutionListener,
- Kancalanabilir,
- IInvokedMethodListener ,
- IInvokedMethodListener2 ,
- IMethodInterceptor ,
- IR Muhabir,
- ISuiteListener,
- ITestListener .
Yukarıdaki Arayüz denir TestNG Dinleyiciler. Bu arayüzler Selenium'da günlükler oluşturmak veya özelleştirmek için kullanılır TestNG raporlar.
Bu eğitimde ITestListener'ı uygulayacağız.
ITestListener'ın aşağıdaki yöntemleri vardır
- OnStart- Herhangi bir Test başladığında OnStart yöntemi çağrılır.
- onTestSuccess- Herhangi bir Testin başarısı üzerine onTestSuccess yöntemi çağrılır.
- onTestFailure- Herhangi bir Testin başarısız olması durumunda onTestFailure yöntemi çağrılır.
- onTestSkipped- onTestSkipped yöntemi herhangi bir Testin atlanması durumunda çağrılır.
- onTestFailedButinSuccessPercentage- Test her başarısız olduğunda ancak başarı yüzdesi dahilinde olduğunda yöntem çağrılır.
- onFinish- Tüm Testler yürütüldükten sonra onFinish yöntemi çağrılır.
Test Senaryosu
Bu test senaryosunda Giriş işlemini otomatikleştirip 'ItestListener'ı uygulayacağız.
Oluşturma adımları TestNG dinleyici
Yukarıdaki test senaryosu için Listener'ı uygulayacağız.
) 1 Adım 'ITestListener'ı uygulayan “ListenerTest” sınıfını oluşturun. Fareyi kırmızı çizgili metnin üzerine getirin ve Eclipse Aşağıdaki ekranda gösterildiği gibi size 2 hızlı düzeltme önerecektir:
“Uygulanmayan yöntemleri ekle” seçeneğine tıklamanız yeterlidir. Koda birden fazla uygulanmamış yöntem (gövde olmadan) eklenir. Aşağıyı kontrol edin-
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 } }
'ListenerTest' sınıfını değiştirelim. Özellikle, aşağıdaki yöntemleri değiştireceğiz-
onTestFailure, onTestSkipped, onTestStart, onTestSuccess, etc.
Değişiklik basittir. Sadece Testin adını yazdırıyoruz.
Günlükler konsolda oluşturulur. Kullanıcının hangi testin başarılı, başarısız ve atlanmış durumu olduğunu anlaması kolaydır.
Değişiklikten sonra kod şöyle görünür:
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()); } }
) 2 Adım Oturum açma işlemi otomasyonu için başka bir "TestCases" sınıfı oluşturun. Selenium otomatik olarak oturum açmak için bu 'TestCases'i yürütecektir.
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("http://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); } }
) 3 Adım Daha sonra bu dinleyiciyi normal proje sınıfımız olan “TestCases”e uygulayın. Sınıfa ve arayüze bağlanmanın iki farklı yolu vardır.
İlk yol, aşağıda gösterildiği gibi Dinleyici ek açıklamasını (@Listeners) kullanmaktır:
@Listeners(Listener_Demo.ListenerTest.class)
Bunu aşağıda gösterildiği gibi “TestCases” sınıfında kullanıyoruz.
Sonunda "TestCases" sınıfı, Dinleyici ek açıklamasını kullandıktan sonra şuna benzer:
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("http://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); } }
Proje yapısı şöyle görünür:
Adım 4): “TestCases” sınıfını yürütün. “ListenerTest” sınıfındaki yöntemler, @Test olarak açıklamalı yöntemlerin davranışına göre otomatik olarak çağrılır.
Adım 5): Günlüklerin konsolda görüntülendiği Çıkışı doğrulayın.
'TestCase'lerin çıktısı şu şekilde görünecektir:
[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]
Birden fazla sınıf için Dinleyici kullanımı.
Projenin birden fazla sınıfı varsa, her birine Dinleyici eklemek hantal ve hataya açık olabilir.
Bu gibi durumlarda testng.xml oluşturup XML'e dinleyici etiketi ekleyebiliriz.
Bu dinleyici, sahip olduğunuz sınıf sayısına bakılmaksızın test paketinin tamamına uygulanır. Bu XML dosyasını çalıştırdığınızda dinleyiciler bahsedilen tüm sınıflar üzerinde çalışacaktır. Ayrıca istediğiniz sayıda dinleyici sınıfını da bildirebilirsiniz.
ÖZET
Dinleyicilerin günlük oluşturması veya özelleştirmesi gerekir TestNG raporlar Selenium Web sürücüsü.
- Pek çok dinleyici türü vardır ve gereksinimlere göre kullanılabilir.
- Dinleyiciler Selenium web sürücüsü komut dosyasında kullanılan arayüzlerdir
- Dinleyicinin kullanımını gösterdi Selenium
- Birden fazla sınıf için Dinleyiciler uygulandı