Test Grupları – Dahil Et ve Hariç Tut (Örnek)
TestNG Birim, fonksiyonel, uçtan uca, kullanıcı arayüzü ve entegrasyon testleri gibi farklı test tasarım türlerini kapsayan bir Test çerçevesidir.
XML oluşturup maven aracılığıyla çalıştırarak tek veya birden fazla paketi (buradaki paket, bir grup sınıfı uygun bir yönetici formatında kapsüllemek anlamına gelir) çalıştırabilirsiniz.
TestNG Örnekli Gruplar
Grupları kullanıyoruz Test ne zaman,
- Test yöntemlerini farklı sınıflarda (işlevselliğe bağlı olarak) ayrı ayrı tanımlamak istemiyoruz ve
- Aynı zamanda bazı test senaryolarını sanki kodda yokmuş gibi yok saymak (yürütmemek) istiyorsunuz.
- Bunu gerçekleştirmek için onları gruplandırmamız gerekiyor. Bu, testNG'de desteklenen "dahil etme" ve "hariç tutma" mekanizmaları kullanılarak yapılır.
Aşağıdaki örnekte XML dosyasında grupların nasıl kullanılacağına ilişkin sözdizimini gösterdik.
@Test (groups = { "bonding", "strong_ties" })
Burada “bonding” ve “strong_ties” olmak üzere 2 grup ismi kullanıyoruz (bunlar sizin isteğinize göre değiştirilebilecek mantıksal isimlerdir).
<groups>
etiketi XML'deki grupların başlangıcını tanımlar.
Belirtilen grubu test sınıflarından seçmek için XML'inizi özelleştirin. Aşağıda, bir XML dosyasındaki grupların nasıl bildirileceğinin sözdizimi yer almaktadır;
<groups> <run> <include name="bonding" /> </run> </groups>
Yani bir sınıfta 10 test metodunun olduğunu varsayalım.
Onların dışında,
- 6 yöntem “bonding” grubunda etiketlenmiştir ve
- 4 tanesi “strong_ties” grubunda
İleriye doğru maven/'i ayarlayacağız.Java yolu kullanın ve Eclipse XML dosyalarını kullanan grupların kullanımını göstermek için IDE Java tabanlı maven projesi.
Şunun için XML oluştur: TestNG Etiketlerle
- Maven çerçevesindeki XML (Genişletilebilir İşaretleme Dili) dosyası bir veya daha fazla testin bilgilerini içerir ve etiket.
- XML'deki test bilgileri şu şekilde temsil edilir: etiket ve bir veya daha fazlasını içerebilir TestNG sınıflar.
- A Java içeren sınıf @Ölçek test yöntemlerinin üzerindeki açıklama şu şekilde tanımlanır: TestNG yöntemleri.
Gibi çalışan bir testNG xml oluşturmak için sırayla birden fazla etiket kullanılır , Ve
- Birincisi yürütme raporu oluşturmak üzere rapor edilen testNG'ye tüm bilgileri tanımlayan mantıksal bir adı tutan etiket.
- İkincisi , başarılı, başarısız, test senaryolarını atla gibi test yürütme raporunun bilgilerini ve toplam yürütme süresi ve grup bilgisi gibi diğer bilgileri tutan mantıksal ad olduğuna dikkat edin.
- Üçüncüsücom.group.guru99.TC_Class1” />, com.group.guru99 kullanılan paket olup, Test Sınıfı adı TC_Class1'dir.
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="Suite"> <test name="Guru 99 Smoke Test Demo"> <groups> <run> <include name="strong_ties" /> </run> </groups> <classes> <class name="com.group.guru99.TC_Class1" /> </classes> </test> </suite>
Aşağıdaki bölümlerde verilen gelecek video için bu XML'i kullanacağız.
Test XML'inde "hariç tut" veya "dahil et"
Grup mekanizmasının kullanımını karmaşık bulduğunuzu varsayalım, o zaman testNG XML bir testi hariç tutma/dahil etme işlevselliğini kolaylaştırır.
Exclude Tag: Syntax for exclude tag <exclude name="${TEST_CASE_NAME}" /> Include Tag: Syntax for include tag <include name="${TEST_CASE_NAME}" />
Not: Aynı anda birden fazla test senaryosunu dahil edebilir/hariç tutabiliriz; bu, Gruplar için de geçerlidir.
koşmak TestNG Kodu gruplandırma, dahil etme, hariç tutma (video demosu)
Açıklaması Java Kod ve XML ile gruplandırın, hariç tutun ve dahil edin XML'deki etiket.
Test Senaryosu: Guru99 demo Bankacılık sitesini başlatın, ardından giriş sayfasında birkaç şeyin olduğunu doğrulayın, kimlik bilgilerini girin ve giriş yaptığınızda uygulamada birkaç yeni şeyi yeniden doğrulayın.
Not: Kodladığınız her adım ayrı yöntemlerle bildirilmelidir, ancak çalıştırıldığında XML dosyasındaki girişlere bağlı olarak test yöntemlerini çalıştıracaktır.
- Yöntem 1: Tarayıcıyı başlatın ve URL'yi başlatın (tc01LaunchURL())
- Yöntem 2: Giriş Sayfası Başlığını Doğrulayın (tc02VerifyLaunchPage())
- Yöntem 3: Oturum açma formuna kullanıcıAdı ve Parolayı girin (tc03EnterCredentials())
- Yöntem 4: Kullanıcı Kontrol Panelinde Yönetici Kimliğinin varlığını doğrulayın (tc04VerifyLoggedInPage())
- Yöntem 5: Kullanıcı Kontrol Panelinde birkaç bağlantıyı daha doğrulayın (tc05VerifyHyperlinks())
Senaryomuzun kodu:
package com.group.guru99; import java.util.concurrent.TimeUnit; 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 TC_Class1 { public static final WebDriver webDriver = new FirefoxDriver();; String launchPageHeading = "//h3[text()='Guru99 Bank']"; final String userName_element = "//input[@name='uid']", password_element = "//input[@name='password']", signIn_element = "//input[@name='btnLogin']"; final String userName_value = "mngr28642", password_value = "ydAnate"; final String managerID = "//td[contains(text(),'Manger Id')]"; final String newCustomer = "//a[@href='addcustomerpage.php']", fundTransfer = "//a[@href='FundTransInput.php']"; /** * This test case will initialize the webDriver */ @Test(groups = { "bonding", "strong_ties" }) public void tc01LaunchURL() { webDriver.manage().window().maximize(); webDriver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); webDriver.get("http://www.demo.guru99.com/V4/"); } /** * Will check the presence of Heading on Login Page */ @Test(groups = { "bonding" }) public void tc02VerifyLaunchPage() { Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(), "Home Page heading is not displayed"); System.out.println("Home Page heading is displayed"); } /** * This test case will enter User name, password and will then click on * signIn button */ @Test(groups = { "bonding", "strong_ties" }) public void tc03EnterCredentials() { webDriver.findElement(By.xpath(userName_element)).sendKeys(userName_value); webDriver.findElement(By.xpath(password_element)).sendKeys(password_value); webDriver.findElement(By.xpath(signIn_element)).click(); } /** * This test case will verify manger's ID presence on DashBoard */ @Test(groups = { "strong_ties" }) public void tc04VerifyLoggedInPage() { Assert.assertTrue(webDriver.findElement(By.xpath(managerID)).isDisplayed(), "Manager ID label is not displayed"); System.out.println("Manger Id label is displayed"); } /** * This test case will check the presence of presence of New customer link * And FundTransfer link in Left pannel */ @Test(groups = { "bonding" }) public void tc05VerifyHyperlinks() { Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(), "New customer hyperlink is not displayed"); System.out.println("New customer hyperlink is displayed"); Assert.assertTrue(webDriver.findElement(By.xpath(fundTransfer)).isEnabled(), "Fund Transfer hyperlink is not displayed"); System.out.println("Fund Transfer hyperlink is displayed"); } }
Lütfen Dikkat: Kimlik bilgileri yalnızca 20 gün geçerlidir, bu nedenle yerel makinenizde kod çalıştırmayı denerseniz geçersiz kimlik bilgileri hatasıyla karşılaşabilirsiniz.
Kodun Açıklaması:
Yukarıda belirtildiği gibi, her eylemi bağımsız yöntemlerle gerçekleştirmek için 5 test senaryosu oluşturduk.
Her yöntem için bir grup parametresini bir değerle ilişkilendirdik.
Temel olarak bunlar farklılaşan grupların adıdır; yani "strong_ties" ve "bağlanma".
- Birinci ve Üçüncü yöntemler "bonding", "strong_ties" olarak etiketlenir; bu, XML'in herhangi bir grupta güncellenmesi durumunda bu durumun geçerli olacağı anlamına gelir. Test Durumu koşacak.
- İkinci yöntem ise sadece “bonding” grubuna etiketlenir, bu XML'in bonding grubuyla güncellenmesi anlamına gelir. Yalnızca bu durumda bu test senaryosu çalışacaktır.
- Dördüncü Test senaryosu, Strong_ties grubuyla etiketlenmiştir; bu, bu test senaryosunun yalnızca XML'in Strong_ties grup adıyla güncellenmesi durumunda çalışacağı anlamına gelir.
- Son fakat en az beşinci test senaryosu bağlanma grubuna eklenmiştir; bu, bu test senaryosunun yalnızca XML'in bağlanma grubu adıyla güncellenmesi durumunda çalışacağı anlamına gelir.
Yani toplamda 4 senaryomuz var;
Senaryo 1: Grup adından bağımsız olarak tüm test senaryolarını çalıştırmak istiyoruz. Bu durumda Grup etiketini çalışan XML'den kaldıracağız.
Senaryo 2: Yalnızca her iki grupla (güçlü bağlar veya bağlanma) ilgili birkaç test yürütmek istiyoruz. Lütfen bakın:
- Bu videoda Grup parametresi XML çalıştırılarak yorumlanmıştır. Böylece tüm test senaryolarının yürütüldüğünü göreceksiniz.
- Videonun devamında artık XML'e grup adını da ekledik, sadece o gruba özel test senaryolarının çalıştığını görebilirsiniz.
Senaryo 3: Test senaryosunu hariç tutmak için Hariç Tutma mekanizmasını kullanıyoruz. Lütfen videoya bakın
- Çalıştırılan XML'de birkaç test senaryosunu (tc02) isimlerini yazarak hariç tuttuğumuzu görüyorsunuz. Nihai sonuçta, bahsedilen test senaryoları çalışmadı.
Senaryo 4: Son olarak, test senaryolarını (tc01LaunchURL, tc03EnterCredentials ve tc05VerifyHyperlinks) dahil etmek için include test mekanizmasını kullanıyoruz. Lütfen videoya bakın
Bu videoda XML'de bahsedilen test senaryolarının yalnızca test yürütme sırasında çalıştığını göreceksiniz.
Lütfen yukarıdaki örnekteki koddan kodu indirin.
Sonuç
Burada Maven projesinde XML kullanarak test senaryolarını çalıştırmanın nispeten yeni bir yolunu öğrendik.
TestNG'ye kısa bir giriş yaparak başladık ve Gruplar, hariç tutma ve dahil etme işlemlerinin tüm teknik özellikleriyle devam ettik.