TestNG Öğretici: Ek Açıklamalar ve Çerçeve Nedir? Selenium

Nedir? TestNG?

TestNG NG'nin "Yeni Nesil" anlamına geldiği bir otomasyon test çerçevesidir. TestNG esinlenmiştir JUnit (@) ek açıklamalarını kullanır. TestNG dezavantajların üstesinden gelir JUnit ve yapmak için tasarlanmıştır uçtan uca test kolay.

kullanma TestNG, uygun bir rapor oluşturabilir ve kaç test senaryosunun geçildiğini, başarısız olduğunu ve atlandığını kolayca öğrenebilirsiniz. Başarısız olan test senaryolarını ayrı ayrı yürütebilirsiniz.

Örneğin:

  • Diyelim ki beş test vakanız var, her test vakası için bir yöntem yazıldı (Programın testNG kullanılmadan ana yöntem kullanılarak yazıldığını varsayalım). Bu programı önce çalıştırdığınızda, üç yöntem başarıyla yürütülür ve dördüncü yöntem başarısız olur. Sonra dördüncü yöntemde bulunan hataları düzeltin, şimdi yalnızca dördüncü yöntemi çalıştırmak istiyorsunuz çünkü ilk üç yöntem zaten başarıyla yürütülüyor. Bu, kullanmadan mümkün değildir TestNG.
  • The TestNG in Selenium bir seçenek sağlar, yani, test-output klasöründe testng-failed.xml dosyası. Yalnızca başarısız test vakalarını çalıştırmak istiyorsanız bu XML dosyasını çalıştırmanız anlamına gelir. Yalnızca başarısız test vakalarını yürütecektir.

Yukarıdaki konseptin yanı sıra, şu konuda daha fazlasını öğreneceksiniz: TestNGAvantajları nelerdir gibi TestNG, @test açıklamalarını kullanarak test yöntemlerinin nasıl oluşturulacağı, bu sınıfların test paketi dosyasına nasıl dönüştürüleceği ve hem Eclipse üzerinden hem de komut satırından nasıl çalıştırılacağı.

Neden kullan TestNG ile Selenium?

Varsayılan Selenium testler, test sonuçları için uygun bir format oluşturmaz. Kullanma TestNG in Selenium, test sonuçları üretebiliriz.

köprü Selenium kullanıcılar bunu birden fazla kullanıyor haziran Avantajlarından dolayı. O kadar çok özelliği var ki TestNGancak yalnızca kullanabileceğimiz en önemlilerine odaklanacağız. SeleniumAşağıda temel özellikleri verilmiştir: Selenium TestNG:

  • Raporu, çalıştırılan test senaryolarının sayısını, geçilen test senaryolarının sayısını, başarısız olan test senaryolarının sayısını ve atlanan test senaryolarının sayısını içeren uygun bir formatta oluşturun.
  • Birden fazla test senaryosu, testng.xml dosyasına dönüştürülerek daha kolay bir şekilde gruplandırılabilir. Hangi test senaryosunun ilk önce yürütülmesi gerektiğini önceliklendirebilirsiniz.
  • Aynı test durumu, yalnızca 'çağrı sayısı' adı verilen anahtar kelime kullanılarak döngüler olmadan birden çok kez yürütülebilir.
  • Testng'yi kullanarak birden fazla tarayıcıda birden fazla test senaryosu yürütebilirsiniz; örneğin çapraz tarayıcı testi.
  • The TestNG çerçeve gibi araçlarla kolayca entegre edilebilir TestNG Maven, Jenkins vb.
  • Testte kullanılan ek açıklamaların anlaşılması çok kolaydır; örneğin: @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest
  • WebDriver'ın rapor oluşturmaya yönelik yerel bir mekanizması yoktur. TestNG Raporu aşağıda gösterilene benzer okunabilir bir formatta oluşturabilirsiniz.
  • kullanım TestNG ile Selenium

  • TestNG Testlerin kodlanma şeklini basitleştirir. Testlerimizde artık statik bir ana yönteme gerek yok. Eylemlerin sırası, yöntemlerin statik olmasını gerektirmeyen, anlaşılması kolay açıklamalarla düzenlenir.
  • kullanım TestNG ile Selenium

    kullanım TestNG ile Selenium

  • Yakalanmayan istisnalar otomatik olarak TestNG Testi erken sonlandırmadan. Bu istisnalar raporda başarısız adımlar olarak raporlanır.

Avantajları TestNG tekrar JUnit

Üç önemli avantajı var TestNG tekrar JUnit:

  • Ek açıklamaların anlaşılması daha kolaydır
  • Test senaryoları daha kolay gruplandırılabilir
  • Paralel test mümkündür

Açıklama Nedir? TestNG?

Ek açıklamalar TestNG altlarındaki yöntemin nasıl yürütüleceğini kontrol edebilen kod satırlarıdır. Bunların önünde her zaman @ simgesi bulunur. Çok erken ve hızlı TestNG Örnek aşağıda gösterilendir.

Ek açıklama TestNG

Açıklamalar daha sonra “Açıklamalarda Kullanılan Açıklamalar” başlıklı bölümde ele alınacaktır. TestNG”Yani yukarıdakileri anlamamanız tamamen sorun değil TestNG Örnek henüz. Şimdilik şunu not etmek önemlidir: TestNG kodlamak ve anlamak daha kolaydır JUnit.

Testleri paralel olarak çalıştırma özelliği şu adreste mevcuttur: TestNG ama içinde değil JUnitBöylece TestNG kullanan testçiler için çerçeve daha çok tercih edilir Selenium Kafes.

Test Senaryoları Nasıl Yazılır? TestNG?

) 1 Adım İş mantığınızı yazın ve ekleyin TestNG kodunuzdaki ek açıklamalar.
) 2 Adım Sınıf adı, grup adı, paket adı vb. gibi daha fazla bilgi ekleyin
) 3 Adım Çalıştır TestNG.

Kullanarak Test Senaryosu Oluşturun TestNG Açıklamalar

Şimdi, kullanarak ilk test senaryomuzu nasıl oluşturacağımızı öğreneceğiz. TestNG Ek açıklamalar Selenium:

Bir test senaryosu oluşturmadan önce yeni bir senaryo oluşturmalıyız. TestNG Proje Eclipse ve “İlk” olarak adlandırınTestNGProjesi”.

Yeni kurma TestNG Proje

1 Adım: Dosya > Yeni > öğesine tıklayın Java Proje

Yeni kurma TestNG Proje

2 Adım: “İlk” yazınTestNGProje Adı olarak Proje”yi seçin ve İleri’ye tıklayın.

Yeni kurma TestNG Proje

3 Adım: Artık ithalata başlayacağız TestNG Projemizde kütüphaneler. “Kütüphaneler” sekmesine ve ardından “Kütüphane Ekle…” seçeneğine tıklayın.

Yeni kurma TestNG Proje

4 Adım: Kitaplık Ekle iletişim kutusunda “TestNG” ve İleri'ye tıklayın.

Yeni kurma TestNG Proje

5 Adım: Son'a tıklayın.

Yeni kurma TestNG Proje

şunu fark etmelisin TestNG Kütüphaneler listesine dahil edilmiştir.

Yeni kurma TestNG Proje

6 Adım: Şimdi aşağıdakileri içeren JAR dosyalarını ekleyeceğiz: Selenium API'dir. Bu dosyalar şurada bulunur: Java indirdiğimiz istemci sürücüsü https://www.selenium.dev/downloads/ biz kurulum yaparken Selenium ve Eclipse önceki bölümlerde.

Yeni kurma TestNG Proje

Ardından, yerleştirdiğiniz yere gidin Selenium JAR dosyaları.

Yeni kurma TestNG Proje

Harici JAR'ları ekledikten sonra ekranınız bu şekilde görünmelidir.

Yeni kurma TestNG Proje

7 Adım: Son'a tıklayın ve İlk işlemimizin gerçekleştiğini doğrulayın.TestNGProje şu tarihte görülebilir: EclipsePaket Gezgini penceresi.

Yeni kurma TestNG Proje

Yeni Nasıl Oluşturulur TestNG Test Dosyası

Artık projemizi bu şekilde oluşturmayı bitirdiğimize göre TestNG öğretici, yeni bir tane oluşturalım TestNG dosyası.

1 Adım: 'Src'ye tıklayın ve diğerini seçin.
“Src” paket klasörüne sağ tıklayın ve ardından Yeni > Diğer… seçeneğini seçin.

Yeni bir tane oluştur TestNG Test Dosyası

2 Adım: Seç TestNG sınıf.
Tıkla TestNG klasörü seçin ve “TestNG sınıf” seçeneği. Sonrakine tıkla.

Yeni bir tane oluştur TestNG Test Dosyası

3 Adım: Değerleri yazın.
Aşağıda belirtilen değerleri uygun giriş kutularına yazın ve Son'a tıklayın. Adını koyduğumuzu fark edin Java Dosyayı “İlkTestNGDosya".

Yeni bir tane oluştur TestNG Test Dosyası

4 Adım: Şablon Oluşturuldu.
Eclipse otomatik olarak bizim için şablon oluşturmalı TestNG aşağıda gösterilen dosya.

Yeni bir tane oluştur TestNG Test Dosyası

İlk Kodlamamız TestNG Test Senaryosu Örneği

Şimdi ilkimizi oluşturalım Test Durumu olup olmadığını kontrol edecek Mercury Tours'un ana sayfası doğrudur. Kodunuzu aşağıda gösterildiği gibi yazın TestNG Örnek:

package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;

public class firsttestngfile {
    public String baseUrl = "https://demo.guru99.com/test/newtours/";
    String driverPath = "C:\\geckodriver.exe";
    public WebDriver driver ; 
     
  @Test
  public void verifyHomepageTitle() {
       
      System.out.println("launching firefox browser"); 
      System.setProperty("webdriver.gecko.driver", driverPath);
      driver = new FirefoxDriver();
      driver.get(baseUrl);
      String expectedTitle = "Welcome: Mercury Tours";
      String actualTitle = driver.getTitle();
      Assert.assertEquals(actualTitle, expectedTitle);
      driver.close();
  }
}

Aşağıdakilere dikkat edin.

  • TestNG main() yöntemine sahip olmanızı gerektirmez.
  • Yöntemlerin statik olması gerekmez.
  • @Test ek açıklamasını kullandık. @Test, altındaki yöntemin bir test durumu olduğunu söylemek için kullanılır. Bu durumda, validHomepageTitle() yöntemini test durumumuz olarak ayarladık ve bu nedenle üzerine bir '@Test' ek açıklaması yerleştirdik.
  • Ek açıklamaları kullandığımız için TestNGorg.testng.annotations.* paketini içe aktarmamız gerekiyordu.
  • Assert sınıfını kullandık. Assert sınıfı doğrulama işlemlerini yürütmek için kullanılır. TestNG. Kullanmak için org.testng.Assert paketini içe aktarmamız gerekiyor.

Tek bir dosyada birden fazla test senaryonuz (bu nedenle birden fazla @Test ek açıklaması) olabilir. TestNG dosya. Bu, daha sonra "Kullanılan Açıklamalar" bölümünde daha ayrıntılı olarak ele alınacaktır. TestNG".

Testi Çalıştırma

Testi çalıştırmak için dosyayı çalıştırmanız yeterlidir. Eclipse normalde yaptığınız gibi. Eclipse biri Konsol penceresinde, diğeri Konsol penceresinde olmak üzere iki çıktı sağlayacaktır. TestNG Sonuçlar penceresi.

Testi Çalıştırma

Testi Çalıştırma

tarafından oluşturulan raporların kontrol edilmesi TestNG

Konsol penceresi Eclipse test durumu sonuçlarımızın metin tabanlı bir raporunu verirken, TestNG Sonuçlar penceresi bize grafiksel bir pencere verir.

Tarafından Oluşturulan Raporlar Kontrol Ediliyor TestNG

HTML Raporları Oluşturma

TestNG HTML formatında rapor oluşturma yeteneğine sahiptir.

1 Adım: İlk çalışmamızı yürüttükten sonraTestNGÖnceki bölümde oluşturduğumuz dosyaya proje adına sağ tıklayın (İlkTestNGProje Gezgini penceresindeki Proje) ardından “Yenile” seçeneğine tıklayın.

HTML Raporları Oluşturma

2 Adım: Bir “test-çıktı” klasörünün oluşturulduğuna dikkat edin. Genişletin ve bir index.html dosyası arayın. Bu HTML dosyası, en son test çalışmasının sonuçlarının bir raporudur.

HTML Raporları Oluşturma

3 Adım: Double-içinde açmak için bu index.html dosyasına tıklayın Eclipseyerleşik web tarayıcısıdır. Testinizi tekrar çalıştırdıktan sonra istediğiniz zaman sıradan web tarayıcılarında olduğu gibi F5 tuşuna basarak bu sayfayı yenileyebilirsiniz.

HTML Raporları Oluşturma

Kullanılan ek açıklamalar TestNG

Önceki bölümde @Test ek açıklamasıyla tanıştınız. Şimdi daha gelişmiş ek açıklamalar ve bunların kullanımları üzerinde çalışacağız.

Çoklu Test Durumları

Tek bir açıklamada birden fazla @Test ek açıklaması kullanabiliriz TestNG dosya. Varsayılan olarak @Test tarafından açıklamalı yöntemler alfabetik olarak yürütülür. Aşağıdaki koda bakın. C_test, a_test ve b_test yöntemleri kodda alfabetik olarak düzenlenmemiş olsa da bu şekilde yürütülecektir.

Kullanılan ek açıklamalar TestNG

Bu kodu çalıştırın ve oluşturulan index.html sayfasında "Kronolojik görünüm"ü tıklayın.

Kullanılan ek açıklamalar TestNG

Parametreler

Yöntemlerin farklı bir sırada yürütülmesini istiyorsanız “öncelik” parametresini kullanın. Parametreler, ek açıklamanın işlevini değiştiren anahtar kelimelerdir.

  • Parametreler onlara bir değer atamanızı gerektirir. Bunu, yanlarına bir “=” işareti koyarak ve ardından değeri ekleyerek yapabilirsiniz.
  • Parametreler, aşağıda gösterilen kod parçacığında olduğu gibi, açıklamanın hemen sonrasına yerleştirilen bir çift parantez içine alınır.

Parametreler

TestNG @Test ek açıklamasını en düşük öncelik değerinden en büyüğüne kadar yürütecektir. Öncelik değerlerinizin ardışık olmasına gerek yoktur.

Parametreler

The TestNG HTML raporu, yöntemlerin artan öncelik değerine göre yürütüldüğünü doğrulayacaktır.

Parametreler

Çoklu Parametreler

@Test'in "öncelik" dışında, yalnızca "doğru" veya "yanlış" olarak ayarlanabilen "alwaysRun" adında başka bir parametresi vardır. Tek bir ek açıklamada iki veya daha fazla parametre kullanmak için bunları virgülle ayırın aşağıda gösterilen gibi.

@Test(priority = 0, alwaysRun = true)

Çoklu Parametreler

@BeforeTest ve @AfterTest

@ÖnceTest bu ek açıklamanın altındaki yöntemler yürütülecek ilk test senaryosu öncesinde TestNG dosya.
@SonraTest bu ek açıklamanın altındaki yöntemler yürütülecek tüm test senaryolarından sonra TestNG dosya yürütülür.

Aşağıdaki kodu göz önünde bulundurun.

package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
public class firsttestngfile {
    public String baseUrl = "https://demo.guru99.com/test/newtours/";
    String driverPath = "C:\\geckodriver.exe";
    public WebDriver driver ; 
     
     @BeforeTest
      public void launchBrowser() {
          System.out.println("launching firefox browser"); 
          System.setProperty("webdriver.gecko.driver", driverPath);
          driver = new FirefoxDriver();
          driver.get(baseUrl);
      }
      @Test
      public void verifyHomepageTitle() {
          String expectedTitle = "Welcome: Mercury Tours";
          String actualTitle = driver.getTitle();
          Assert.assertEquals(actualTitle, expectedTitle);
     }
      @AfterTest
      public void terminateBrowser(){
          driver.close();
      }
}

Yukarıdaki tablo ve kod tarafından sunulan mantığı uygulayarak, yöntemlerin yürütüleceği sıranın şu şekilde olduğunu tahmin edebiliriz:

  • 1st – tarayıcıyı başlat()
  • 2nd – doğrulamaAnasayfaTitle()
  • 3rd – tarayıcıyı sonlandır()

Ek açıklama bloklarının yerleşimi, yürütülecekleri kronolojik sırayı etkilemeden değiştirilebilir. Bir ile anlayalım TestNG Örnek ve ek açıklama bloklarını, kodunuz aşağıdakine benzer görünecek şekilde yeniden düzenlemeye çalışın.

package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
public class firsttestngfile {
    public String baseUrl = "https://demo.guru99.com/test/newtours/";
    String driverPath = "C:\\geckodriver.exe";
    public WebDriver driver ; 
     @AfterTest                            //Jumbled
      public void terminateBrowser(){
          driver.close();
      }
     @BeforeTest                            //Jumbled
      public void launchBrowser() {
          System.out.println("launching firefox browser"); 
          System.setProperty("webdriver.gecko.driver", driverPath);
          driver = new FirefoxDriver();
          driver.get(baseUrl);
      }
      @Test                                //Jumbled
      public void verifyHomepageTitle() {
          String expectedTitle = "Welcome: Mercury Tours";
          String actualTitle = driver.getTitle();
          Assert.assertEquals(actualTitle, expectedTitle);
     }
      
}

Yukarıdaki kodu çalıştırın ve şunu fark edin:

Çoklu Parametreler

@BeforeMethod ve @AfterMethod

@BeforeMethod bu ek açıklamanın altındaki yöntemler yürütülecek her test senaryosunda her yöntemden önce.
@AfterMethod bu ek açıklamanın altındaki yöntemler yürütülecek her test senaryosunda her yöntemden sonra.

In Mercury Turlar, aşağıdaki iki bağlantının hedef sayfalarının başlıklarını doğrulamak istediğimizi varsayalım.

Çoklu Parametreler

Testimizin akışı şu şekilde olacaktır:

  • Ana sayfaya gidin ve başlığını doğrulayın.
  • KAYDOLUN'a tıklayın ve hedef sayfanın başlığını doğrulayın.
  • Ana sayfaya geri dönün ve başlığın hâlâ doğru olup olmadığını doğrulayın.
  • DESTEK'e tıklayın ve hedef sayfanın başlığını doğrulayın.
  • Ana sayfaya geri dönün ve başlığın hâlâ doğru olup olmadığını doğrulayın.

Aşağıdaki kod, yukarıda belirtilen senaryoyu verimli bir şekilde yürütmek için @BeforeMethod ve @AfterMethod'un nasıl kullanıldığını gösterir.

package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
@Test
public class firsttestngfile {
    public String baseUrl = "https://demo.guru99.com/test/newtours/";
    String driverPath = "C:\\geckodriver.exe";
    public WebDriver driver; 
    public String expected = null;
    public String actual = null;
        @BeforeTest
      public void launchBrowser() {
          System.out.println("launching firefox browser"); 
          System.setProperty("webdriver.gecko.driver", driverPath);
          driver= new FirefoxDriver();
          driver.get(baseUrl);
      }
      
      @BeforeMethod
      public void verifyHomepageTitle() {
          String expectedTitle = "Welcome: Mercury Tours";
          String actualTitle = driver.getTitle();
          Assert.assertEquals(actualTitle, expectedTitle);
      }
          @Test(priority = 0)
      public void register(){
          driver.findElement(By.linkText("REGISTER")).click() ;
          expected = "Register: Mercury Tours";
          actual = driver.getTitle();
          Assert.assertEquals(actual, expected);
      }
          @Test(priority = 1)
      public void support() {
            driver.findElement(By.linkText("SUPPORT")).click() ;
            expected = "Under Construction: Mercury Tours";
            actual = driver.getTitle();
            Assert.assertEquals(actual, expected);
      }
      @AfterMethod
      public void goBackToHomepage ( ) {
            driver.findElement(By.linkText("Home")).click() ;
      }
       
      @AfterTest
      public void terminateBrowser(){
          driver.close();
      }
}

Bu testi uyguladıktan sonra, TestNG Aşağıdaki sıralamayı bildirmelisiniz.

Çoklu Parametreler

Basitçe söylemek gerekirse, @BeforeMethod çalıştırmanız gereken yöntemleri içermelidir önce @AfterMethod'un çalıştırmanız gereken yöntemleri içermesi gerekirken her test senaryosu sonra her test durumu.

Özeti TestNG Açıklamalar

@BeforeSuite: Açıklamalı yöntem, bu paketteki tüm testler çalıştırılmadan önce çalıştırılacaktır.

@AfterSuite: Açıklamalı yöntem, bu paketteki tüm testler çalıştırıldıktan sonra çalıştırılacaktır.

@ÖnceTest: Etiketin içindeki sınıflara ait herhangi bir test yöntemi çalıştırılmadan önce açıklamalı yöntem çalıştırılacaktır.

@SonraTest: Açıklamalı yöntem, etiketin içindeki sınıflara ait tüm test yöntemleri çalıştırıldıktan sonra çalıştırılacaktır.

@BeforeGroups: Bu yapılandırma yönteminin daha önce çalıştıracağı grupların listesi. Bu yöntemin, bu gruplardan herhangi birine ait olan ilk test yöntemi çağrılmadan kısa bir süre önce çalışması garanti edilir.

@AfterGroups: Bu yapılandırma yönteminin ardından çalışacağı grupların listesi. Bu yöntemin, bu gruplardan herhangi birine ait olan son test yöntemi çağrıldıktan kısa bir süre sonra çalışması garanti edilir.

@Dersten önce: Açıklamalı yöntem, geçerli sınıftaki ilk test yöntemi çağrılmadan önce çalıştırılacaktır.

@Dersten sonra: Açıklamalı yöntem, geçerli sınıftaki tüm test yöntemleri çalıştırıldıktan sonra çalıştırılacaktır.

@BeforeMethod: Açıklamalı yöntem her test yönteminden önce çalıştırılacaktır.

@AfterMethod: Açıklamalı yöntem her test yönteminden sonra çalıştırılacaktır.

@Ölçek: Açıklamalı yöntem bir test senaryosunun parçasıdır

Sonuç

  • TestNG bir test yapmak yapabilecek bir çerçeve Selenium testlerin daha kolay anlaşılmasını ve anlaşılması kolay raporlar oluşturulmasını sağlar.
  • Ana avantajları TestNG tekrar JUnit aşağıdaki gibidir.
    • Ek açıklamaların kullanımı ve anlaşılması daha kolaydır.
    • Test durumları daha kolay gruplandırılabilir.
    • TestNG yaratmamızı sağlar paralel testler.
  • Konsol penceresi Eclipse metin tabanlı bir sonuç üretirken TestNG penceresi daha kullanışlıdır çünkü bize test sonucunun grafiksel çıktısını ve ayrıca şu gibi anlamlı diğer ayrıntıları verir:
    • Her yöntemin çalışma süreleri.
    • Yöntemlerin uygulandığı kronolojik sıra
  • TestNG HTML tabanlı raporlar oluşturma yeteneğine sahiptir.
  • Ek açıklamalarda her zamanki gibi parametreler kullanılabilir Java TestNG yöntemleri.
  • TestNG Dataprovider, tek bir yürütmede test senaryolarında farklı değerleri ileten test fonksiyonuna parametreleri aktarmanın bir yoludur.