TestNG Klavuz

โšก Akฤฑllฤฑ ร–zet

TestNG Yeni nesildir Java test รงerรงevesi ile eลŸleลŸir Selenium YapฤฑlandฤฑrฤฑlmฤฑลŸ otomasyon, zengin raporlama ve paralel yรผrรผtme iรงin. Bu eฤŸitim, temel ek aรงฤฑklamalarฤฑ ve proje kurulumunu kapsamaktadฤฑr. Eclipseฤฐlk test senaryosunun yazฤฑlmasฤฑ, HTML raporlarฤฑ ve geliลŸmiลŸ parametre kullanฤฑmฤฑ.

  • ๐Ÿงฑ Temel ร‡erรงeve: TestNG uzanฤฑr JUnit Aรงฤฑklamalฤฑ fikirler, gruppingve paralel test yรผrรผtme iรงin Selenium sรผitler.
  • ???? ๏ธ Aรงฤฑklamalar ฤฐลŸ AkฤฑลŸฤฑnฤฑ Yรถnlendirir: @Test, @BeforeMethod, @AfterMethod, @BeforeTest ve @AfterTest sฤฑrasฤฑyla kurulum, test ve kaldฤฑrma iลŸlemlerini gerรงekleลŸtirir.
  • ๐Ÿ—‚๏ธ Eclipse Kurmak: Bir Yapฤฑ TestNG projeye ekle TestNG kรผtรผphane ve Selenium JAR dosyalarฤฑnฤฑ oluลŸturun, ardฤฑndan sihirbazdan test sฤฑnฤฑflarฤฑ oluลŸturun.
  • ๐Ÿ“Š Raporlama: TestNG Test รงฤฑktฤฑsฤฑ klasรถrรผnde kronolojik gรถrรผnรผmler de dahil olmak รผzere metin, grafik ve HTML raporlarฤฑ oluลŸturur.
  • โš™๏ธ Parametreler: Testlerin yรผrรผtรผlme sฤฑrasฤฑnฤฑ kontrol etmek ve testlere veri saฤŸlamak iรงin priority, alwaysRun ve dataProvider รถzelliklerini kullanฤฑn.
  • ๐Ÿค– Yapay Zeka DesteฤŸi: Yapay zekรข kodlama asistanlarฤฑ hฤฑzlandฤฑrฤฑyor TestNG Sฤฑnฤฑf oluลŸturma, konum belirleyici gรผncellemeleri ve veri saฤŸlayฤฑcฤฑ iskeleti oluลŸturma.

TestNG Klavuz

Nedir? TestNG?

TestNG NG, "Yeni Nesil" anlamฤฑna gelen "Next Generation" kฤฑsaltmasฤฑyla tanฤฑmlanan bir otomasyon test รงerรงevesidir. TestNG esinlenmiลŸtir JUnit ve kullanฤฑr Java Test akฤฑลŸฤฑnฤฑ kontrol etmek iรงin kullanฤฑlan ek aรงฤฑklamalar (@). Bu, ลŸu sorunlarฤฑn รผstesinden gelir: JUnit'ฤฑn รถnceki sฤฑnฤฑrlamalarฤฑnฤฑ ortadan kaldฤฑrmak ve onu daha kullanฤฑลŸlฤฑ hale getirmek iรงin tasarlanmฤฑลŸtฤฑr. uรงtan uca test kolay.

ฤฐle TestNG DoฤŸru bir rapor oluลŸturabilir ve kaรง testin geรงtiฤŸini, baลŸarฤฑsฤฑz olduฤŸunu veya atlandฤฑฤŸฤฑnฤฑ anฤฑnda gรถrebilirsiniz. Ayrฤฑca yalnฤฑzca baลŸarฤฑsฤฑz olan durumlarฤฑ yeniden รงalฤฑลŸtฤฑrabilirsiniz.

ร–rneฤŸin:

  • Diyelim ki, her biri kendi metodunda yazฤฑlmฤฑลŸ, beลŸ farklฤฑ test senaryonuz var. TestNGรœรง tanesi baลŸarฤฑlฤฑ; dรถrdรผncรผsรผ baลŸarฤฑsฤฑz. Dรถrdรผncรผsรผnรผ dรผzelttikten sonra, ilk รผรงรผ zaten baลŸarฤฑlฤฑ olduฤŸu iรงin sadece onu tekrar รงalฤฑลŸtฤฑrmak istiyorsunuz. Bunu dรผz main() metodu koduyla yapmak zordur.
  • TestNG Bir saฤŸlar testng-failed.xml iรงindeki dosyayฤฑ test-output Klasรถr. Bu XML dosyasฤฑnฤฑ รงalฤฑลŸtฤฑrmak yalnฤฑzca baลŸarฤฑsฤฑz olan durumlarฤฑ yeniden yรผrรผtรผr.

Bunun รถtesinde, ลŸu avantajlarฤฑ รถฤŸreneceksiniz: TestNG@Test ek aรงฤฑklamalarฤฑyla test metotlarฤฑ nasฤฑl yazฤฑlฤฑr ve sฤฑnฤฑflarฤฑnฤฑzฤฑ, รงalฤฑลŸtฤฑrฤฑlabilen bir test paketine nasฤฑl dรถnรผลŸtรผrรผrsรผnรผz gibi konularฤฑ ele alฤฑyoruz. Eclipse veya komut satฤฑrฤฑ.

Neden kullan TestNG 'da Selenium?

Varsayฤฑlan olarak, Selenium Testler dรผzgรผn biรงimlendirilmiลŸ sonuรงlar รผretmiyor. TestNG Test รงalฤฑลŸtฤฑrฤฑcฤฑsฤฑ baฤŸlandฤฑฤŸฤฑnda, ekiple paylaลŸabileceฤŸiniz yapฤฑlandฤฑrฤฑlmฤฑลŸ bir rapor oluลŸturur.

kรถprรผ Selenium kullanฤฑcฤฑlar tercih eder TestNG tekrar JUnit Daha geniลŸ รถzellik yelpazesi nedeniyle. BaลŸlฤฑca รถzellikleri ลŸunlardฤฑr: Selenium ลŸunlardฤฑr:

  • ร‡alฤฑลŸtฤฑrฤฑlan, baลŸarฤฑlฤฑ, baลŸarฤฑsฤฑz ve atlanan test senaryolarฤฑnฤฑn sayฤฑsฤฑnฤฑ iรงeren raporlar.
  • Kolay grupping test senaryolarฤฑnฤฑn bir aracฤฑlฤฑฤŸฤฑyla testng.xml Yรผrรผtme รถncelikleriyle birlikte dosya.
  • Dรถngรผ kullanmadan bir testi birden fazla kez tekrarlayฤฑn. invocationCount.
  • Birden fazla tarayฤฑcฤฑda birden fazla test รงalฤฑลŸtฤฑrฤฑn โ€” รงapraztarayฤฑcฤฑ testi destekler.
  • Maven ile sorunsuz entegrasyon, Jenkinsve diฤŸer CI araรงlarฤฑ.
  • Readable Ek aรงฤฑklamalar โ€” รถrneฤŸin, @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest.
  • Selenium WebDriver'ฤฑn yerleลŸik bir raporlama รถzelliฤŸi yok; TestNG Bu boลŸluฤŸu aลŸaฤŸฤฑdaki gibi temiz bir HTML raporuyla dolduruyor.

TestNG HTML rapor รถrneฤŸi Selenium testleri

  • TestNG Test kodunu basitleลŸtirir. Artฤฑk statik bir main metoduna ihtiyacฤฑnฤฑz yok; ek aรงฤฑklamalar neyin ne zaman รงalฤฑลŸacaฤŸฤฑna karar verir.

OlaฤŸan Java Ana metoda sahip test sฤฑnฤฑfฤฑ yapฤฑsฤฑ

TestNG Ek aรงฤฑklamalar kullanarak test sฤฑnฤฑfฤฑ yapฤฑsฤฑ

  • Yakalanmayan istisnalar, dรผzgรผn bir ลŸekilde ele alฤฑnฤฑr. TestNGBu adฤฑmlar, tรผm รงalฤฑลŸtฤฑrma sonlandฤฑrฤฑlmadan baลŸarฤฑsฤฑz adฤฑmlar olarak rapor edilir.

Avantajlarฤฑ TestNG tekrar JUnit

TestNG รผรง รถnemli avantaj sunmaktadฤฑr JUnit:

  • Ek aรงฤฑklamalarฤฑn anlaลŸฤฑlmasฤฑ ve kullanฤฑmฤฑ daha kolaydฤฑr.
  • Test senaryolarฤฑ daha az รงabayla gruplandฤฑrฤฑlabilir ve รถnceliklendirilebilir.
  • Paralel test yรผrรผtme รถzelliฤŸi varsayฤฑlan olarak desteklenmektedir.

Ek aรงฤฑklama (annotation) nedir? TestNG?

Ek aรงฤฑklamalar TestNG Bir metodun รผzerine yerleลŸtirilen ve o metodun nasฤฑl yรผrรผtรผleceฤŸini kontrol eden kod satฤฑrlarฤฑdฤฑr. Bunlar her zaman @ sembolรผyle baลŸlar. AลŸaฤŸฤฑda basit bir รถrnek gรถsterilmiลŸtir.

ร–rnek E-posta TestNG yukarฤฑdaki aรงฤฑklama Java yรถntem

Aรงฤฑklamalar bu bรถlรผmde ayrฤฑntฤฑlฤฑ olarak ele alฤฑnmฤฑลŸtฤฑr. โ€œKullanฤฑlan Ek Aรงฤฑklamalarโ€ TestNGbaลŸlฤฑklฤฑ bir kฤฑlavuz yayฤฑnladฤฑ Bu eฤŸitimde daha sonra ele alฤฑnacak, bu nedenle yukarฤฑdaki รถrnek sadece beklentileri belirlemek iรงindir. TestNG Ek aรงฤฑklamalarฤฑn kodlanmasฤฑ ve okunmasฤฑ, diฤŸer yรถntemlere gรถre daha kolaydฤฑr. JUnit eลŸdeฤŸerleri ve bunlar testler yรผrรผtรผlรผrken รงok รถnemlidir. Selenium Grid Paralel yรผrรผtmenin รถnemli olduฤŸu yerlerde.

Test Senaryolarฤฑ Nasฤฑl Yazฤฑlฤฑr? TestNG

Bir ... Yazmak TestNG Test senaryosu รผรง aลŸamadan oluลŸur:

  1. ฤฐลŸ mantฤฑฤŸฤฑnฤฑzฤฑ yazฤฑn ve yerleลŸtirin. TestNG Her yรถntemin รผstรผndeki aรงฤฑklamalar.
  2. Sฤฑnฤฑf adฤฑ, grup adฤฑ ve paket adฤฑ gibi meta verileri ekleyin.
  3. ร‡alฤฑลŸtฤฑr TestNG IDE'nizden veya komut satฤฑrฤฑndan sฤฑnฤฑfฤฑ รงalฤฑลŸtฤฑrฤฑn.

Bir test senaryosu oluลŸturmak iรงin ลŸunu kullanฤฑn: TestNG Aรงฤฑklamalar

ลžimdi ilk test senaryomuzu oluลŸturacaฤŸฤฑz. TestNG ek aรงฤฑklamalarda SeleniumTesti yazmadan รถnce yeni bir kurulum yapฤฑn. TestNG projede Eclipse ve onu รงaฤŸฤฑr AdTestNGProje.

Yeni Bir Kurulum TestNG Proje

) 1 Adฤฑm Tฤฑkla Dosya > Yeni > Java Proje.

Eclipse yeni bir menรผ oluลŸturmak iรงin Java proje

) 2 Adฤฑm KeลŸfet AdTestNGProje proje adฤฑ olarak ve tฤฑklayฤฑn Sonraki.

Yeni Java Adฤฑ First olan proje sihirbazฤฑTestNGProje

) 3 Adฤฑm iรงe aktar TestNG Kรผtรผphaneler. Tฤฑklayฤฑn. Kรผtรผphaneler sekmesini ve ardฤฑndan Kรผtรผphane Ekleโ€ฆ.

Kรผtรผphaneler sekmesinde Kรผtรผphane Ekle seรงeneฤŸi bulunmaktadฤฑr. Eclipse

) 4 Adฤฑm iรงinde Kitaplฤฑk ekle diyalog seรง TestNG ve tฤฑklayฤฑn Sonraki.

Seรงilmesi TestNG Kitaplฤฑk Ekle iletiลŸim kutusunda

) 5 Adฤฑm Tฤฑkla BitiลŸ.

Kรผtรผphane Ekle sihirbazฤฑnฤฑ tamamlama

TestNG Artฤฑk Kรผtรผphaneler listesinde gรถrรผnmelidir.

TestNG Kรผtรผphaneler listesinde gรถrรผnรผr

) 6 Adฤฑm ฤฐรงerdikleri JAR dosyalarฤฑnฤฑ ekleyin. Selenium Bunlar API'den geliyor. Java istemci sรผrรผcรผsรผ indirildi selenium.dev/indirmeler.

Harici JAR'larฤฑ Ekle iletiลŸim kutusunda Eclipse

Dosyanฤฑn bulunduฤŸu klasรถre gidin Selenium JAR dosyalarฤฑ saklanฤฑr.

Seรงilmesi Selenium Derleme yolu iรงin JAR dosyalarฤฑ

Harici JAR dosyalarฤฑnฤฑ ekledikten sonra ekran ลŸu ลŸekilde gรถrรผnmelidir.

Selenium Kรผtรผphaneler listesine JAR dosyalarฤฑ eklendi.

) 7 Adฤฑm Tฤฑkla BitiลŸ. Yeni AdTestNGProje Paket Gezgini'nde gรถrรผnรผr.

AdTestNGProje, Paket Gezgini'nde gรถrรผnรผr.

Yeni Nasฤฑl OluลŸturulur TestNG Test Dosyasฤฑ

Proje hazฤฑr olduฤŸunda, yeni bir tane oluลŸturun. TestNG dosyasฤฑ.

) 1 Adฤฑm SaฤŸ tฤฑklayฤฑn. src klasรถr ve seรงin Yeni > DiฤŸerโ€ฆ.

src klasรถrรผnden Yeni DiฤŸer menรผsรผ Eclipse

) 2 Adฤฑm geniลŸletmek TestNG klasรถr seรงin TestNG sฤฑnฤฑfVe tฤฑklama Sonraki.

TestNG Yeni sihirbazdaki sฤฑnฤฑf seรงeneฤŸi

) 3 Adฤฑm AลŸaฤŸฤฑda gรถsterilen deฤŸerleri girin ve tฤฑklayฤฑn. BitiลŸ. Java dosyanฤฑn adฤฑ AdTestNGfileto.

TestNG Birinci sฤฑnฤฑf sihirbazฤฑTestNGDosya deฤŸerleri

) 4 Adฤฑm Eclipse รผretir TestNG AลŸaฤŸฤฑda ลŸablon gรถsterilmiลŸtir.

oluลŸturulan TestNG sฤฑnฤฑf ลŸablonunda Eclipse editรถr

ฤฐlk Kodlama Deneyiminizi TestNG Test Durumu

ฤฐlkini oluลŸturun test durumu unvanฤฑn doฤŸruluฤŸunu teyit eden Mercury Turlar ana sayfasฤฑ.

package firsttestngpackage;

import org.openqa.selenium.WebDriver;
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/";
    public WebDriver driver;

    @Test
    public void verifyHomepageTitle() {
        System.out.println("launching firefox browser");
        // Selenium 4 ships Selenium Manager, so the driver path is no longer required.
        driver = new FirefoxDriver();
        driver.get(baseUrl);
        String expectedTitle = "Welcome: Mercury Tours";
        String actualTitle = driver.getTitle();
        Assert.assertEquals(actualTitle, expectedTitle);
        driver.quit();
    }
}

Dikkat edilmesi gerekenler:

  • TestNG ihtiyacฤฑ yok main() yรถntemi.
  • Metotlarฤฑn statik olmasฤฑ gerekmez.
  • MKS @ร–lรงek aรงฤฑklama iลŸaretleri verifyHomepageTitle() Bir test vakasฤฑ olarak.
  • Ek aรงฤฑklamalar ลŸurada yer almaktadฤฑr: org.testng.annotations.* paketi.
  • MKS ileri sรผrmek sฤฑnฤฑftan org.testng.Assert Sรผrรผcรผ doฤŸrulamalarฤฑnฤฑ.

Tek bir kod bloฤŸunda birden fazla @Test ek aรงฤฑklamasฤฑna sahip olabilirsiniz. TestNG Dosyada bunu ele alฤฑyoruz. โ€œKullanฤฑlan Ek Aรงฤฑklamalarโ€ TestNGbaลŸlฤฑklฤฑ bir kฤฑlavuz yayฤฑnladฤฑ Bรถlรผm.

Testi ร‡alฤฑลŸtฤฑrma

Dosyaya saฤŸ tฤฑklayฤฑn ve ลŸu ลŸekilde รงalฤฑลŸtฤฑrฤฑn: TestNG testi. Eclipse Bu komut iki รงฤฑktฤฑ รผretir: Konsol penceresinde metinsel bir sonuรง ve grafiksel bir sonuรง. TestNG Sonuรงlar penceresi.

TestNG Test sonucunu gรถsteren sonuรง penceresi

Eclipse Konsol penceresi ile TestNG metin รงฤฑktฤฑsฤฑ

Tarafฤฑndan OluลŸturulan Raporlar Kontrol Ediliyor TestNG

Konsol penceresi metin tabanlฤฑ bir รถzet sunarken, TestNG Sonuรงlar penceresi grafiksel bir gรถrรผnรผm sunar.

Metin mi yoksa grafik mi? TestNG sonuรง karลŸฤฑlaลŸtฤฑrmasฤฑ

HTML Raporlarฤฑ OluลŸturma

TestNG Ayrฤฑca tam HTML raporlarฤฑ da oluลŸturabilir.

) 1 Adฤฑm KoลŸu sonrasฤฑ AdTestNGfiletoProjeye saฤŸ tฤฑklayฤฑn ve seรงin. Yenile.

Yenileme seรงeneฤŸi iรงin TestNG projede Eclipse

) 2 Adฤฑm A test-รงฤฑktฤฑsฤฑ Klasรถr gรถrรผnecektir. Klasรถrรผ geniลŸletin ve bulun. index.html โ€” En son รงalฤฑลŸtฤฑrmaya ait HTML raporu.

test-output klasรถrรผ, index.html dosyasฤฑ vurgulanmฤฑลŸ ลŸekilde.

) 3 Adฤฑm Double-Tฤฑklayฤฑn index.html iรงeriden aรงmak iรงin EclipseTarayฤฑcฤฑnฤฑzda. Sonraki รงalฤฑลŸtฤฑrmalarda yenilemek iรงin F5 tuลŸuna basฤฑn.

TestNG HTML dizin raporu ลŸu ลŸekilde oluลŸturuldu: Eclipse

Kullanฤฑlan Aรงฤฑklamalar TestNG

@Test ek aรงฤฑklamasฤฑnฤฑ daha รถnce gรถrdรผnรผz. Bu bรถlรผmรผn geri kalanฤฑ, en kullanฤฑลŸlฤฑ geliลŸmiลŸ ek aรงฤฑklamalarฤฑ kapsamaktadฤฑr.

ร‡oklu Test Durumlarฤฑ

Tek TestNG Dosya birden fazla @Test ek aรงฤฑklamasฤฑ iรงerebilir. Varsayฤฑlan olarak, @Test ile iลŸaretlenmiลŸ yรถntemler alfabetik sฤฑrayla yรผrรผtรผlรผr. AลŸaฤŸฤฑdaki kodda, yรถntemler c_test, a_test, ve b_test Kaynak sฤฑrasฤฑna bakฤฑlmaksฤฑzฤฑn alfabetik olarak รงalฤฑลŸtฤฑrฤฑn.

Tek bir yรถntem iรงinde birden fazla @Test metodu TestNG sฤฑnฤฑf

Kodu รงalฤฑลŸtฤฑrฤฑn ve aรงฤฑn. index.html. tฤฑklayฤฑn Kronolojik gรถrรผnรผm.

Birden fazla รถฤŸenin kronolojik gรถrรผnรผmรผ TestNG yรถntemleri

Parametreler

Varsayฤฑlan sฤฑralamayฤฑ geรงersiz kฤฑlmak iรงin ลŸunu kullanฤฑn: priority parametre. Parametreler, bir aรงฤฑklamanฤฑn davranฤฑลŸฤฑnฤฑ deฤŸiลŸtiren anahtar kelimelerdir.

  • Bir deฤŸer atayฤฑn =.
  • AลŸaฤŸฤฑda gรถsterildiฤŸi gibi, parametreleri aรงฤฑklamanฤฑn hemen ardฤฑndan yer alan parantez iรงine alฤฑn.

TestNG Parametre ve deฤŸer sรถzdizimiyle aรงฤฑklama

TestNG @Test ek aรงฤฑklamalarฤฑnฤฑ en dรผลŸรผk รถncelik deฤŸerinden en yรผksek รถncelik deฤŸerine doฤŸru yรผrรผtรผr. ร–ncelik numaralarฤฑnฤฑn ardฤฑลŸฤฑk olmasฤฑ gerekmez.

@Test รถncelik parametreleriyle birlikte tam kod.

HTML raporu, yรถntemlerin artan รถncelik sฤฑrasฤฑna gรถre yรผrรผtรผldรผฤŸรผnรผ doฤŸrulamaktadฤฑr.

TestNG ร–ncelik sฤฑrasฤฑna gรถre รงalฤฑลŸtฤฑrฤฑlan yรถntemleri gรถsteren rapor.

ร‡oklu Parametreler

DฤฑลŸฤฑnda priority@Test kabul eder alwaysRun parametre (doฤŸru veya yanlฤฑลŸ). Tek bir aรงฤฑklamada iki veya daha fazla parametre kullanmak iรงin, bunlarฤฑ virgรผlle ayฤฑrฤฑn:

@Test(priority = 0, alwaysRun = true)

@Test ek aรงฤฑklamasฤฑ iรงinde birden fazla parametre รถrneฤŸi

@BeforeTest ve @AfterTest

@ร–nceTest Bu aรงฤฑklama altฤฑnda yer alan yรถntemler รงalฤฑลŸtฤฑrฤฑlฤฑr. ilk test senaryosundan รถnce TestNG dosya.
@SonraTest Bu aรงฤฑklama altฤฑnda yer alan yรถntemler รงalฤฑลŸtฤฑrฤฑlฤฑr. tรผm test senaryolarฤฑndan sonra TestNG dosya tamamlandฤฑ.

AลŸaฤŸฤฑdaki kodu gรถz รถnรผnde bulundurun.

package firsttestngpackage;

import org.openqa.selenium.WebDriver;
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/";
    public WebDriver driver;

    @BeforeTest
    public void launchBrowser() {
        System.out.println("launching firefox browser");
        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.quit();
    }
}

Tablo ve koddan, dizinin ลŸu ลŸekilde olacaฤŸฤฑnฤฑ tahmin edebiliriz:

  • 1. โ€” launchBrowser()
  • 2. โ€” verifyHomepageTitle()
  • 3. โ€” terminateBrowser()

Kaynak dosyadaki aรงฤฑklama bloklarฤฑnฤฑn yerleลŸimi, bunlarฤฑn yรผrรผtรผlme sฤฑrasฤฑnฤฑ etkilemez. AลŸaฤŸฤฑda gรถsterildiฤŸi gibi yรถntemleri yeniden dรผzenlemeyi deneyin.

package firsttestngpackage;

import org.openqa.selenium.WebDriver;
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/";
    public WebDriver driver;

    @AfterTest                              // Jumbled
    public void terminateBrowser() {
        driver.quit();
    }

    @BeforeTest                             // Jumbled
    public void launchBrowser() {
        System.out.println("launching firefox browser");
        driver = new FirefoxDriver();
        driver.get(baseUrl);
    }

    @Test                                   // Jumbled
    public void verifyHomepageTitle() {
        String expectedTitle = "Welcome: Mercury Tours";
        String actualTitle = driver.getTitle();
        Assert.assertEquals(actualTitle, expectedTitle);
    }
}

Kodu รงalฤฑลŸtฤฑrฤฑn ve sonucu doฤŸrulayฤฑn.

TestNG KarฤฑลŸฤฑk aรงฤฑklamalara raฤŸmen sonucun sipariลŸi doฤŸruluyor.

@BeforeMethod ve @AfterMethod

@BeforeMethod Bu aรงฤฑklama altฤฑnda yer alan yรถntemler รงalฤฑลŸtฤฑrฤฑlฤฑr. her test yรถnteminden รถnce.
@AfterMethod Bu aรงฤฑklama altฤฑnda yer alan yรถntemler รงalฤฑลŸtฤฑrฤฑlฤฑr. her test yรถnteminden sonra.

In Mercury ร–rneฤŸin, ana sayfadan ulaลŸฤฑlan iki hedef sayfanฤฑn baลŸlฤฑklarฤฑnฤฑ doฤŸrulamak istediฤŸimizi varsayalฤฑm.

รœรง baฤŸlantฤฑdan Mercury Turlar ana sayfasฤฑ

Testin akฤฑลŸฤฑ ลŸu ลŸekildedir:

  • Ana sayfayฤฑ aรงฤฑn 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ฤฑฤŸฤฑ 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ฤฑฤŸฤฑ tekrar doฤŸrulayฤฑn.

AลŸaฤŸฤฑdaki kod, @BeforeMethod ve @AfterMethod'un tekrarlanan adฤฑmlarฤฑ nasฤฑl ele aldฤฑฤŸฤฑnฤฑ gรถstermektedir.

package firsttestngpackage;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
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/";
    public WebDriver driver;
    public String expected = null;
    public String actual = null;

    @BeforeTest
    public void launchBrowser() {
        System.out.println("launching firefox browser");
        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.quit();
    }
}

Testi รงalฤฑลŸtฤฑrdฤฑktan sonra, TestNG AลŸaฤŸฤฑdaki sฤฑralamayฤฑ rapor eder.

TestNG BeforeMethod ve AfterMethod kullanฤฑlarak rapor dizisi

ร–zetle: kurulum adฤฑmlarฤฑnฤฑ iรงeriye yerleลŸtirin. @BeforeMethod ve temizleme veya gezinme sฤฑfฤฑrlama iลŸlemleri iรงeride @AfterMethod Dolayฤฑsฤฑyla her test senaryosu bilinen bir durumda baลŸlar ve biter.

ร–zeti TestNG Aรงฤฑklamalar

  • @BeforeSuite: Test paketindeki tรผm testlerden รถnce รงalฤฑลŸฤฑr.
  • @AfterSuite: Test paketindeki tรผm testler tamamlandฤฑktan sonra รงalฤฑลŸฤฑr.
  • @BeforeTest: Bir sฤฑnฤฑfฤฑn iรงindeki herhangi bir test yรถnteminden รถnce รงalฤฑลŸฤฑr. etiket.
  • @TestSonrasฤฑ: Bir sฤฑnฤฑfฤฑn iรงindeki tรผm test metotlarฤฑndan sonra รงalฤฑลŸฤฑr. etiket.
  • @BeforeGroups: Listelenen gruplardan herhangi birine ait ilk test yรถnteminden kฤฑsa bir sรผre รถnce รงalฤฑลŸฤฑr.
  • @AfterGroups: Listelenen gruplardan herhangi birine ait olan son test yรถnteminden kฤฑsa bir sรผre sonra รงalฤฑลŸฤฑr.
  • @Dersร–ncesi: Geรงerli sฤฑnฤฑftaki ilk test metodundan รถnce รงalฤฑลŸฤฑr.
  • @AfterClass: Geรงerli sฤฑnฤฑftaki tรผm test metotlarฤฑndan sonra รงalฤฑลŸฤฑr.
  • @BeforeMethod: Her test yรถnteminden รถnce รงalฤฑลŸtฤฑrฤฑlฤฑr.
  • @AfterMethod: Her test yรถnteminden sonra รงalฤฑลŸฤฑr.
  • @Test: Bu yรถntem, test senaryosu olarak iลŸaretlenir.

SSS

JUnit 5 modernize edilmiลŸ JUnit Jupiter API ve uzantฤฑ modeli ile. TestNG paralel yรผrรผtme ve paket dรผzeyinde gruplama konusunda hala lider konumda.ping, dependsOn ve DataProvider. Birรงok Selenium takฤฑmlar seรงiyor TestNG uรงtan uca sรผitler iรงin ve JUnit Birim testleri iรงin 5 adet.

`parallel="methods"` veya `parallel="classes"` ifadesini ve `thread-count` รถzelliฤŸini ekleyin. testng.xml dosyasฤฑnฤฑn iรงindeki etiket. TestNG Ardฤฑndan test yรถntemlerini iลŸ parรงacฤฑklarฤฑ arasฤฑnda daฤŸฤฑtฤฑr, bu da ลŸu amaรงlar iรงin idealdir: Selenium Grid veya bulut tabanlฤฑ, tarayฤฑcฤฑlar arasฤฑ รงalฤฑลŸtฤฑrma.

@DataProvider, birden fazla veri kรผmesini tek bir @Test metoduna besler. SaฤŸlayฤฑcฤฑdaki her satฤฑr bir รงalฤฑลŸtฤฑrmayฤฑ temsil eder. Veri odaklฤฑ yaklaลŸฤฑmlar iรงin standart bir kalฤฑptฤฑr. Selenium Formlara, arama kutularฤฑna veya giriลŸ ekranlarฤฑna karลŸฤฑ yapฤฑlan testler.

Evet. AI kodlama asistanlarฤฑ รผretir TestNG ฤฐskeletler oluลŸturun, @Test yรถntemlerine aรงฤฑklama ekleyin, Page Object sฤฑnฤฑflarฤฑ oluลŸturun ve รถrnek CSV dosyalarฤฑndan DataProvider dizileri taslak haline getirin; bu sayede iskelet oluลŸturma sรผresini รถnemli รถlรงรผde azaltฤฑn.

รœretken yapay zeka, testng-results.xml ve Surefire gรผnlรผklerini alฤฑr, benzer hatalarฤฑ kรผmelendirir, olasฤฑ temel nedenleri รถnerir ve Jira biletleri oluลŸturur. Bu, kararsฤฑz testlerin sฤฑnฤฑflandฤฑrฤฑlmasฤฑnฤฑ kฤฑsaltฤฑr ve QA liderlerinin CI dรผzeltmelerini รถnceliklendirmesine yardฤฑmcฤฑ olur.

Bu yazฤฑyฤฑ ลŸu ลŸekilde รถzetleyin: