TestNG @Test Önceliği Selenium
TestNG bir Test yapmak Birim testi, fonksiyonel test, uçtan uca test, kullanıcı arayüzü testi ve entegrasyon testi gibi farklı test tasarım türlerini kapsayan çerçeve.
Tek veya birden fazla test senaryosunu çalıştırabilirsiniz. Test kodu.
Birden fazla test senaryosu çalıştırılırken test önceliği tanımlanmamışsa, TestNG tüm @Test'e sıfır(0) olarak bir öncelik atar.
Şimdi koşarken; Önce daha düşük öncelikler planlanacaktır.
Demosu TestNG Önceliksiz kod
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 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ç diyor Firefox (Tarayıcı aç())
Yöntem 2: Google.com'u başlatın (Google'ı başlatın())
Yöntem 3: “Facebook”u kullanarak bir arama yapın (performSearchAndClick1stLink())
Yöntem 4: Google arama sayfası başlığını doğrulayın (FaceBookPageTitleVerification())
Senaryomuzun kodu:
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 driver;
// Method 1: Open Brower say Firefox
@Test
public void openBrowser() {
driver = new FirefoxDriver();
}
// Method 2: Launch Google.com
@Test
public void launchGoogle() {
driver.get("http://www.google.co.in");
}
// Method 3: Perform a search using "Facebook"
@Test
public void peformSeachAndClick1stLink() {
driver.findElement(By.xpath(".//*[@title='Search']")).sendKeys("Facebook");
}
// Method 4: Verify Google search page title.
@Test
public void FaceBookPageTitleVerification() throws Exception {
driver.findElement(By.xpath(".//*[@value='Search']")).click();
Thread.sleep(3000);
Assert.assertEquals(driver.getTitle().contains("Facebook - Google Search"), true);
}
}
Kod Açıklaması
Yukarıda belirtildiği gibi, her eylemi bağımsız yöntemlerle gerçekleştirmek için 4 test senaryosu oluşturduk.
- İlk yöntem (Tarayıcı aç) başlatılmasını belirtir Firefox tarayıcı.
- İkinci yöntem (Google'ı başlat) Google.com'un başlatılmasının başlatılan tarayıcıda olduğunu belirtir.
- Üçüncü yöntem (peformSeachAndClick1stLink)arama kutusunda arama yapan eyaletler (xpath ile) (“.//*[@title='Ara']”) gibi bir arama terimiyle Facebook ve
- Dördüncü ve son yöntem (FaceBookPageTitleDoğrulaması) Google'ın arama simgesine tıklandığını ve tarayıcı başlığının şu şekilde değiştirildiğini doğruladığını belirtir: Facebook – Google Arama.
Şimdi videoda gösterildiği gibi testNG'yi kullanarak bu kodu çalıştırın, tüm sonuçları bulacaksınız. Test Durumu başarısız oluyorlar. Başarısızlığın nedeni: Önceki test senaryosunun geçilmesine bağımlılık olduğundan, yalnızca mevcut çalışan test senaryosunun geçilmesi gerekecektir.
Bu durumda,
- Uygulanan ilk yöntem Tarayıcı aç(). Herhangi bir bağımlılığı olmadığı için kabul edildi.
- Uygulanan ikinci yöntem ise FaceBookPageTitleVerification(); başarısız oluyor çünkü arama düğmesine tıklayıp tarayıcı başlığını doğrulamaya çalışıyoruz.
- Arama etkinliği süreç değilse başka bir adımın nasıl geçilebileceğini görebilirsiniz. Dolayısıyla test senaryolarımın başarısız olmasının nedeni budur.
PASSED: openBrowser FAILED: FaceBookPageTitleVerification FAILED: launchGoogle FAILED: peformSeachAndClick1stLink
Demosu TestNG Alfabetik Sırada Önceliği Olmayan Kod
Herhangi bir öncelik belirtmezsek, testng @Test yöntemlerini koddaki uygulanma yerlerine bakılmaksızın yöntem adlarının alfabetik sırasına göre çalıştıracaktır.
package com.guru.testngannotations;
import org.testng.annotations.Test;
public class TestNG_Priority_Annotations {
@Test
public void c_method(){
System.out.println("I'm in method C");
}
@Test
public void b_method(){
System.out.println("I'm in method B");
}
@Test
public void a_method(){
System.out.println("I'm in method A");
}
@Test
public void e_method(){
System.out.println("I'm in method E");
}
@Test
public void d_method(){
System.out.println("I'm in method D");
}
}
Çıktı
I'm in method A I'm in method B I'm in method C I'm in method D I'm in method E
Yöntemleri rastgele (c, b, a, e, d) olarak tanımlamamıza rağmen testng, yöntemleri alfabetik sıraya göre yöntem adlarına göre çalıştırdı ve aynı durum çıktıya da yansıdı.
Öncelik nasıl ayarlanır? TestNG
Önceki örnekte gördüğünüz gibi bu senaryoyu geçmek için sıralama gerekli, bu yüzden önceki kod parçasını şu şekilde değiştireceğiz: Öncelik Parametresi böylece her test kendilerine atanan önceliğe göre çalışmalıdır.
Şimdi görebileceğiniz gibi, her test senaryosuna Öncelik atadık, bu, test senaryosunun önce düşük öncelik değerinin yürütüleceği anlamına gelir.
TestNG'nin iş başında olması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 driver;
// Method 1: Open Browser say Firefox
@Test (priority=1)
public void openBrowser() {
driver = new FirefoxDriver();
}
// Method 2: Launch Google.com
@Test (priority=2)
public void launchGoogle() {
driver.get("http://www.google.co.in");
}
// Method 3: Perform a search using "Facebook"
@Test (priority=3)
public void peformSeachAndClick1stLink() {
driver.findElement(By.xpath(".//*[@title='Search']")).sendKeys("Facebook");
}
// Method 4: Verify Google search page title.
@Test (priority=4)
public void FaceBookPageTitleVerification() throws Exception {
driver.findElement(By.xpath(".//*[@value='Search']")).click();
Thread.sleep(3000);
Assert.assertEquals(driver.getTitle().contains("Facebook - Google Search"), true);
}
}
Kod Açıklaması
Her testcase'e öncelik atadıktan sonra, aşağıda belirtilen Video-2'de gösterildiği gibi testNG'yi kullanarak yukarıdaki kodu çalıştırın.
Burada test senaryolarının önceliklendirildiğini görebilirsiniz. Daha düşük önceliğe sahip test senaryoları ilk önce yürütülür; yani artık test senaryolarında önceliğe göre sıralı bir yürütme vardır. Bu nedenle, tüm test durumları şu anda geçmektedir.
Eclipse konsoluna dikkat edin:
Çıktı :
PASSED: openBrowser PASSED: launchGoogle PASSED: peformSearchAndClick1stLink PASSED: FaceBookPageTitleVerification
0 sayısı en yüksek önceliğe sahiptir (ilk önce yürütülü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 şekilde devam eder.
package com.guru.testngannotations;
import org.testng.annotations.Test;
public class TestNG_Priority_Annotations {
@Test(priority=6)
public void c_method(){
System.out.println("I'm in method C");
}
@Test(priority=9)
public void b_method(){
System.out.println("I'm in method B");
}
@Test(priority=1)
public void a_method(){
System.out.println("I'm in method A");
}
@Test(priority=0)
public void e_method(){
System.out.println("I'm in method E");
}
@Test(priority=3)
public void d_method(){
System.out.println("I'm in method D");
}
}
Çıktı
I'm in method E I'm in method A I'm in method D I'm in method C I'm in method B
Burada öncelikleri 0,1,3,6,9 olarak verdik. Yani önceliği 0 olan yöntem önce yürütülür, ardından önceliği 1 olan yöntem vb. yürütülür. Burada öncelikleri belirttiğimiz için alfabetik sıralama yöntemi adı dikkate alınmayacaktır.
Aynı Önceliğe Sahip Yöntemler
Yöntemlerin aynı önceliğe sahip olma ihtimali olabilir. Bu durumlarda test, önceliği aynı olan yöntem adlarının alfabetik sırasını dikkate alır.
package com.guru.testngannotations;
import org.testng.annotations.Test;
public class TestNG_Priority_Annotations {
@Test(priority=6)
public void c_method(){
System.out.println("I'm in method C");
}
@Test(priority=9)
public void b_method(){
System.out.println("I'm in method B");
}
@Test(priority=6)
public void a_method(){
System.out.println("I'm in method A");
}
@Test(priority=0)
public void e_method(){
System.out.println("I'm in method E");
}
@Test(priority=3)
public void d_method(){
System.out.println("I'm in method D");
}
}
Çıktı
I'm in method E I'm in method D I'm in method A I'm in method C I'm in method B
Burada 'e' ve 'd' öncelik değerlerine göre yürütü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ı buna göre yürütür.
Öncelikli (aynı önceliğe sahip) ve öncelikli olmayan yöntemlerin birleştirilmesi
Bu durumda, bir test sınıfında iki durumu ele alacağız.
- Aynı öncelik değerine sahip yöntemler.
- Birden fazla önceliklendirilmemiş yöntem.
package com.guru.testngannotations;
import org.testng.annotations.Test;
public class TestNG_Priority_Annotations {
@Test()
public void c_method(){
System.out.println("I'm in method C");
}
@Test()
public void b_method(){
System.out.println("I'm in method B");
}
@Test(priority=6)
public void a_method(){
System.out.println("I'm in method A");
}
@Test(priority=0)
public void e_method(){
System.out.println("I'm in method E");
}
@Test(priority=6)
public void d_method(){
System.out.println("I'm in method D");
}
}
Çıktı:
I'm in method B I'm in method C I'm in method E I'm in method A I'm in method D
PASSED: b_method PASSED: c_method PASSED: e_method PASSED: a_method PASSED: d_method
Açıklama:
İlk tercih: Önceliklendirilmemiş yöntemler: 'c' ve 'b': Alfabetik sıraya göre önce 'b', ardından 'c' yürütülür.
İkinci tercih: Öncelikli yöntemler: 'a', 'e' ve 'd': 'e' en yüksek önceliğe (0) sahip olduğundan ilk önce yürütüldü. 'a' ve 'd' yöntemlerinin önceliği aynı olduğundan testte yöntem adlarının alfabetik sırası dikkate alındı. Yani aralarında önce 'a', sonra 'd' uygulandı.
Büyük/küçük harfe duyarlı TestNG
Bilginiz olsun diye söylüyorum, testNG'de önceliği tanımlamak için standart bir sözdizimi vardır; @Test (öncelik=4), diyelim ki onu başka bir sözdiziminde tanımlıyorsunuz @Test (ÖNCEKLİK=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 zorunluluğu varsa, bunu kullanarak kolayca yapılabilir. öncelik testNG'yi çalıştırma aracı olarak kullanma.
Bu eğitim Ramandeep Singh ve Rama'nın katkıları sayesinde mümkün olmuştur. Krishna ne yazık ki

