Selenium'da TestNG @ Test Önceliği

İçindekiler:

Anonim

TestNG, birim testi, fonksiyonel test, uçtan uca test, UI testi ve entegrasyon testi gibi farklı test tasarım türlerini kapsayan bir Test çerçevesidir.

Testng kodunuzda bir veya birden fazla test senaryosu çalıştırabilirsiniz.

Birden fazla test senaryosu çalıştırılırken test önceliği tanımlanmazsa, TestNG tüm @Test önceliğini sıfır (0) olarak atar.

Şimdi koşarken; önce daha düşük öncelikler planlanacaktır.

Bu eğitimde öğreneceksiniz -

  • Önceliksiz TestNG kodunun Demosu
  • Alfabetik Sırada Önceliksiz TestNG kodunun Demosu
  • TestNG'de Öncelik nasıl belirlenir
  • Aynı Öncelikli Yöntemler
  • Hem öncelikli (aynı önceliğe sahip) hem de öncelikli olmayan yöntemleri birleştirmek

Önceliksiz TestNG kodunun Demosu

Tüm test senaryolarını geçmek için sıralamanın gerekli olacağı bir senaryoyu ele alalım:

Senaryo: "Facebook" gibi belirli bir anahtar kelimeyle bir Google araması yapmanız gereken bir kod oluşturun. Şimdi, Tarayıcı başlığının "Facebook - Google Arama" olarak değiştirildiğini doğrulayın.

Not: Kodladığınız her adım ayrı yöntemlerde olmalıdır

Yöntem 1 : Tarayıcıyı açın, Firefox deyin (openBrowser ())

Yöntem 2 : Google.com'u başlatın (launchGoogle ())

Yöntem 3 : "Facebook" kullanarak bir arama gerçekleştirin (performSearchAndClick1stLink ())

Yöntem 4 : Google arama sayfası başlığını doğrulayın (FaceBookPageTitleVerification ())

Senaryomuz için kod :

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations.Test;public class Priority_In_testNG {WebDriver sürücüsü;// 1. Yöntem: Tarayıcıyı açın, Firefox deyin@Ölçekpublic void openBrowser () {sürücü = yeni FirefoxDriver ();}// 2. Yöntem: Google.com'u başlatın@Ölçekpublic void launchGoogle () {driver.get ("http://www.google.co.in");}// 3. Yöntem: "Facebook" kullanarak bir arama yapın@Ölçekpublic void peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Ara']")). sendKeys ("Facebook");}// Yöntem 4: Google arama sayfası başlığını doğrulayın.@Ölçekpublic void FaceBookPageTitleVerification () Exception {driver.findElement (By.xpath (".//*[@ value = 'Ara']")) tıklayın ();Thread.sleep (3000);Assert.assertEquals (driver.getTitle (). İçerir ("Facebook - Google Arama"), true);}}

Kod Açıklaması

Yukarıda belirtildiği gibi, her eylemi bağımsız bir yöntemde gerçekleştirmek için 4 test senaryosu oluşturduk.

  • İlk yöntem (openBrowser) Firefox tarayıcısını başlatmayı belirtir.
  • İkinci yöntem (launchGoogle) , Google.com'un başlatılan tarayıcıda olduğunu belirtir.
  • Üçüncü yöntem (peformSeachAndClick1stLink) , arama kutusunda (xpath (".//*[@title='Search ']") arama terimiyle Facebook ve
  • Dördüncü ve son yöntem (FaceBookPageTitleVerification) , Google'ın arama simgesine tıkladığını ve tarayıcı başlığının Facebook - Google Arama olarak değiştirildiğini doğruladığını belirtir .

Şimdi bu kodu videoda gösterildiği gibi testNG kullanarak çalıştırın, tüm Test Senaryosunun başarısız olduğunu göreceksiniz. Başarısızlığın nedeni: Önceki test senaryosunun geçmesi için bir bağımlılık olduğundan, yalnızca mevcut çalışan test senaryosu geçilecektir.

Bu durumda,

  • Çalıştırılan ilk yöntem openBrowser () 'dır. Bağımlılığı olmadığı için geçti.
  • İkinci yöntem ise FaceBookPageTitleVerification (); başarısız oluyor çünkü arama düğmesine tıklamaya ve tarayıcının başlığını doğrulamaya çalışıyoruz.
  • Arama faaliyeti işlenmiyorsa, başka herhangi bir adımın nasıl geçilebileceğini görebilirsiniz. Dolayısıyla, test durumlarımın başarısız olmasının nedeni budur.
GEÇTİ: openBrowserBAŞARISIZ: FaceBookPageTitleVerificationBAŞARISIZ: launchGoogleBAŞARISIZ: peformSeachAndClick1stLink

Alfabetik Sırada Önceliksiz TestNG kodunun Demosu

Herhangi bir öncelikten bahsetmezsek, testng, koddaki uygulama yerine bakılmaksızın, yöntem adlarının alfabetik sırasına göre @Test yöntemlerini çalıştıracaktır.

paket com.guru.testngannotations;import org.testng.annotations.Test;public class TestNG_Priority_Annotations {@Ölçekpublic void c_method () {System.out.println ("C yöntemindeyim");}@Ölçekpublic void b_method () {System.out.println ("B yöntemindeyim");}@Ölçekpublic void a_method () {System.out.println ("A yöntemindeyim");}@Ölçekpublic void e_method () {System.out.println ("E yöntemindeyim");}@Ölçekpublic void d_method () {System.out.println ("D yöntemindeyim");}}

Çıktı

A yöntemindeyimB yöntemindeyimC yöntemindeyimD yöntemindeyimE yöntemindeyim

Metotları rastgele tanımlamış olsak da (c, b, a, e, d) testng metotları metot isimlerine göre alfabetik sıraya göre yürüttü ve çıktıya da yansıdı.

TestNG'de Öncelik nasıl belirlenir

Önceki örnekte gördüğünüz gibi, bu senaryoyu geçmek için sıralamanın gerekli olduğunu, bu nedenle önceki kod parçasını Priority Parameter ile değiştireceğiz, böylece her test kendilerine atanan önceliğe göre çalıştırılmalıdır.

Şimdi görebileceğiniz gibi, her bir test senaryosuna Öncelik atadık, test senaryosu önce düşük öncelikli değerin yürütüleceği anlamına gelir.

TestNG uygulamasında öncelik

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations.Test;public class Priority_In_testNG {WebDriver sürücüsü;// 1. Yöntem: Tarayıcıyı açın, Firefox deyin@Test (öncelik = 1)public void openBrowser () {sürücü = yeni FirefoxDriver ();}// 2. Yöntem: Google.com'u başlatın@Test (öncelik = 2)public void launchGoogle () {driver.get ("http://www.google.co.in");}// 3. Yöntem: "Facebook" kullanarak bir arama yapın@Test (öncelik = 3)public void peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Ara']")). sendKeys ("Facebook");}// Yöntem 4: Google arama sayfası başlığını doğrulayın.@Test (öncelik = 4)public void FaceBookPageTitleVerification () Exception {driver.findElement (By.xpath (".//*[@ value = 'Ara']")) tıklayın ();Thread.sleep (3000);Assert.assertEquals (driver.getTitle (). İçerir ("Facebook - Google Arama"), true);}} 

Kod Açıklaması

Her bir test senaryosuna öncelik atadıktan sonra, yukarıda bahsedilen Video-2'de gösterildiği gibi testNG kullanarak yukarıdaki kodu çalıştırın.

Burada, test senaryolarının önceliklendirildiğini görebilirsiniz. Daha düşük önceliğe sahip test senaryosu ilk olarak yürütülür, yani artık test senaryolarında önceliğe göre sıralı yürütme vardır. Bu nedenle, tüm test durumları şimdi geçiyor.

Tutulma konsoluna dikkat edin:

Çıktı :

GEÇTİ: openBrowserGEÇTİ: launchGoogleGEÇTİ: peformSearchAndClick1stLinkGEÇTİ: FaceBookPageTitleVerification

0 sayısı en yüksek önceliğe sahiptir (ilk olarak çalıştırılacaktır) ve öncelik verilen sayıya göre devam eder, yani 0, 1'den en yüksek önceliğe sahiptir. 1, 2'den en yüksek önceliğe sahiptir ve bu böyle devam eder.

paket com.guru.testngannotations;import org.testng.annotations.Test;public class TestNG_Priority_Annotations {@Test (öncelik = 6)public void c_method () {System.out.println ("C yöntemindeyim");}@Test (öncelik = 9)public void b_method () {System.out.println ("B yöntemindeyim");}@Test (öncelik = 1)public void a_method () {System.out.println ("A yöntemindeyim");}@Test (öncelik = 0)public void e_method () {System.out.println ("E yöntemindeyim");}@Test (öncelik = 3)public void d_method () {System.out.println ("D yöntemindeyim");}}

Çıktı

E yöntemindeyimA yöntemindeyimD yöntemindeyimC yöntemindeyimB yöntemindeyim 

Burada öncelikleri 0,1,3,6,9 olarak verdik. Bu nedenle, öncelik olarak 0'a sahip olan yöntem önce çalıştırılır, ardından öncelik-1 olan yöntem vb. Burada, öncelikleri sağladığımız için alfabetik sıra yönteminin adı dikkate alınmayacaktır

Aynı Öncelikli Yöntemler:

Yöntemlerin aynı önceliği içermesi ihtimali olabilir. Bu durumlarda testng, önceliği aynı olan yöntem adlarının alfabetik sırasını dikkate alır.

paket com.guru.testngannotations;import org.testng.annotations.Test;public class TestNG_Priority_Annotations {@Test (öncelik = 6)public void c_method () {System.out.println ("C yöntemindeyim");}@Test (öncelik = 9)public void b_method () {System.out.println ("B yöntemindeyim");}@Test (öncelik = 6)public void a_method () {System.out.println ("A yöntemindeyim");}@Test (öncelik = 0)public void e_method () {System.out.println ("E yöntemindeyim");}@Test (öncelik = 3)public void d_method () {System.out.println ("D yöntemindeyim");}}

Çıktı

E yöntemindeyimD yöntemindeyimA yöntemindeyimC yöntemindeyimB yöntemindeyim

Burada 'e' ve 'd' öncelik değerlerine göre çalıştırılır. Ancak 'a' ve 'c' yöntemleri aynı öncelik değerini içerir (6). Dolayısıyla, burada test, 'a' ve 'c' nin alfabetik sırasını dikkate alır ve bunları uygun şekilde yürütür.

Hem öncelikli (aynı önceliğe sahip) hem de öncelikli olmayan yöntemleri birleştirmek:

Bu durumda, bir test sınıfında iki vakayı ele alacağız.

  1. Aynı öncelik değerine sahip yöntemler.
  2. Birden fazla öncelikli olmayan yöntem.
paket com.guru.testngannotations;import org.testng.annotations.Test;public class TestNG_Priority_Annotations {@Ölçek()public void c_method () {System.out.println ("C yöntemindeyim");}@Ölçek()public void b_method () {System.out.println ("B yöntemindeyim");}@Test (öncelik = 6)public void a_method () {System.out.println ("A yöntemindeyim");}@Test (öncelik = 0)public void e_method () {System.out.println ("E yöntemindeyim");}@Test (öncelik = 6)public void d_method () {System.out.println ("D yöntemindeyim");}}

Çıktı:

B yöntemindeyimC yöntemindeyimE yöntemindeyimA yöntemindeyimD yöntemindeyim 
GEÇTİ: b_methodGEÇTİ: c_methodGEÇTİ: e_methodGEÇTİ: a_methodGEÇTİ: d_method

Açıklama:

İlk tercih: Önceliklendirilmemiş yöntemler: 'c' ve 'b': Alfabetik sıraya göre önce 'b' ve ardından 'c' yürütülmüştür.

İkinci tercih: Öncelikli yöntemler: 'a', 'e' ve 'd': 'e' en yüksek önceliğe (0) sahip olduğu için ilk olarak yürütüldü. 'A' ve 'd' yöntemlerinin önceliği aynı olduğundan, testng, yöntem adlarının alfabetik sırasını dikkate aldı. Yani, aralarında, önce 'a' ve sonra 'd' idam edildi.

TestNG'de büyük / küçük harfe duyarlı

Sadece bilginiz için testNG'de önceliği tanımlamak için standart bir sözdizimi vardır, yani @Test (öncelik = 4) , bunu başka bir sözdiziminde tanımladığınızı varsayalım @Test (PRIORITY = 1) o zaman IDE'niz bunu bir derleme hatası olarak gösterecektir. . Aşağıdaki resme bakın:

Sonuç:

Gördüğünüz gibi, belirli bir sırayla bir dizi test senaryosu çalıştırma gereksinimi varsa, çalıştırma aracı olarak testNG kullanılarak Öncelik kullanılarak kolayca yapılabilir .

Bu eğitim, Ramandeep Singh ve Rama Krishna Gadde'ın katkılarıyla mümkün olmuştur.