Selenyum - TestNG
TestNG, güçlü bir test çerçevesi, TestNG ortaya çıkmadan önce uzun süredir kullanımda olan JUnit'in gelişmiş bir sürümüdür. NG, "Yeni Nesil" anlamına gelir.
TestNG çerçevesi aşağıdaki özellikleri sağlar -
- Ek açıklamalar, testleri kolayca düzenlememize yardımcı olur.
- Esnek test yapılandırması.
- Test senaryoları daha kolay gruplanabilir.
- Testlerin paralelleştirilmesi TestNG kullanılarak elde edilebilir.
- Veriye dayalı test desteği.
- Dahili raporlama.
Eclipse için TestNG'yi Yükleme
Step 1 - Eclipse'i başlatın ve 'Yeni Yazılım Kur'u seçin.
Step 2 - URL'yi 'http://beust.com/eclipse' olarak girin ve 'Ekle'yi tıklayın.
Step 3- 'Depo Ekle' iletişim kutusu açılır. Adı 'TestNG' olarak girin ve 'Tamam'ı tıklayın
Step 4 - 'Tümünü Seç'e tıklayın ve' TestNG 'şekilde gösterildiği gibi seçilecektir.
Step 5 - Devam etmek için 'İleri'yi tıklayın.
Step 6 - Seçilen öğeleri gözden geçirin ve 'İleri'yi tıklayın.
Step 7 - "Lisans Sözleşmesini Kabul Edin" ve "Bitir" i tıklayın.
Step 8 - TestNG yüklemeye başlar ve ilerleme aşağıda gösterilir.
Step 9- Yazılımın geçerliliği kurulamadığından Güvenlik Uyarısı açılır. "Tamam" ı tıklayın.
Step 10- Yükleyici, değişikliklerin etkili olması için Eclipse'i yeniden başlatmanızı ister. "Evet" i tıklayın.
TestNG'de Ek Açıklamalar
Java diline JDK 5'te ek açıklamalar resmi olarak eklendi ve TestNG, test sınıflarına açıklama eklemek için ek açıklamaları kullanma seçimini yaptı. Ek açıklamaları kullanmanın yararlarından bazıları aşağıda verilmiştir. TestNG hakkında daha fazla bilgi bulunabilirhere
TestNG, ek açıklamalara bakarak ilgilendiği yöntemleri tanımlar. Bu nedenle, yöntem adları herhangi bir model veya formatla sınırlı değildir.
Ek açıklamalara ek parametreler aktarabiliriz.
Ek açıklamalar güçlü bir şekilde yazılmıştır, bu nedenle derleyici hataları hemen işaretleyecektir.
Test sınıflarının artık herhangi bir şeyi genişletmesine gerek yoktur (JUnit 3 için TestCase gibi).
Sr.No. | Ek Açıklama ve Açıklama |
---|---|
1 | @BeforeSuite Açıklamalı yöntem, bu paketteki tüm testler çalıştırılmadan önce yalnızca bir kez çalıştırılacaktır. |
2 | @AfterSuite Açıklamalı yöntem, bu paketteki tüm testler çalıştırıldıktan sonra yalnızca bir kez çalıştırılacaktır. |
3 | @BeforeClass Açıklamalı yöntem, geçerli sınıftaki ilk test yöntemi çağrılmadan önce yalnızca bir kez çalıştırılacaktır. |
4 | @AfterClass Açıklamalı yöntem, geçerli sınıftaki tüm test yöntemleri çalıştırıldıktan sonra yalnızca bir kez çalıştırılacaktır. |
5 | @BeforeTest Ek açıklamalı yöntem, <test> etiketi içindeki sınıflara ait herhangi bir test yöntemi çalıştırılmadan önce çalıştırılacaktır. |
6 | @AfterTest Açıklamalı yöntem, <test> etiketi içindeki sınıflara ait tüm test yöntemleri çalıştırıldıktan sonra çalıştırılacaktır. |
7 | @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. |
8 | @AfterGroups Bu yapılandırma yönteminin daha sonra ç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. |
9 | @BeforeMethod Açıklamalı yöntem, her test yönteminden önce çalıştırılacaktır. |
10 | @AfterMethod Açıklamalı yöntem, her test yönteminden sonra çalıştırılacaktır. |
11 | @DataProvider Bir yöntemi, bir test yöntemi için veri sağlama olarak işaretler. Açıklamalı yöntem bir Object [] [] döndürmelidir; burada her Object [] test yönteminin parametre listesine atanabilir. Bu DataProvider'dan veri almak isteyen @Test yönteminin, bu ek açıklamanın adına eşit olan bir dataProvider adı kullanması gerekir. |
12 | @Factory Bir yöntemi, TestNG tarafından Test sınıfları olarak kullanılacak nesneleri döndüren bir fabrika olarak işaretler. Yöntem Object [] döndürmelidir. |
13 | @Listeners Bir test sınıfındaki dinleyicileri tanımlar. |
14 | @Parameters @Test yöntemine parametrelerin nasıl aktarılacağını açıklar. |
15 | @Test Bir sınıfı veya yöntemi testin parçası olarak işaretler. |
TestNG-Eclipse Kurulumu
Step 1 - Eclipse'i başlatın ve aşağıda gösterildiği gibi bir 'Yeni Java Projesi' oluşturun.
Step 2 - Proje adını girin ve 'İleri'ye tıklayın.
Step 3 - "Kitaplıklar" Sekmesine gidin ve aşağıda gösterildiği gibi "Harici JAR Ekle" seçeneğine tıklayarak Selenium Uzaktan Kumanda Sunucusu JAR dosyasını ekleyin.
Step 4- Eklenen JAR dosyası burada gösterilmektedir. 'Kitaplık Ekle'yi tıklayın.
Step 5- 'Kitaplık Ekle' iletişim kutusu açılır. "TestNG" yi seçin ve "Kitaplık Ekle" iletişim kutusunda "İleri" yi tıklayın.
Step 6 - Eklenen 'TestNG' Kitaplığı eklenir ve aşağıda gösterildiği gibi görüntülenir.
Step 7 - Proje oluşturulduktan sonra, projenin yapısı aşağıdaki gibi olacaktır.
Step 8 - 'src' klasörünü sağ tıklayın ve Yeni >> Diğer'i seçin.
Step 9 - 'TestNG'yi seçin ve' İleri'yi tıklayın.
Step 10 - 'Kaynak Klasör' adını seçin ve 'Tamam'ı tıklayın.
Step 11 - "Paket adı" nı, "sınıf adı" nı seçin ve "Bitir" i tıklayın.
Step 12 - Paket gezgini ve oluşturulan sınıf görüntülenecektir.
TestNG'de İlk Test
Şimdi TestNG kullanarak komut dosyası oluşturmaya başlayalım. WebDriver'ı anlamak için kullandığımız aynı örnek için komut dosyası yazalım. Www.calculator.net demo uygulamasını kullanacağız ve yüzde hesaplayıcı yapacağız .
Aşağıdaki testte, testNG program yürütme akışını yürüteceği için ana yöntemin HİÇBİRİ olmadığını fark edeceksiniz. Sürücüyü başlattıktan sonra, '@BeforeTest' yöntemini, ardından '@Test' ve ardından '@AfterTest' çalıştıracaktır. Bir sınıfta herhangi bir sayıda '@Test' ek açıklaması olabileceğini, ancak '@BeforeTest' ve '@AfterTest' yalnızca bir kez görünebileceğini lütfen unutmayın.
package TestNG;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
public class TestNGClass {
WebDriver driver = new FirefoxDriver();
@BeforeTest
public void launchapp() {
// Puts an Implicit wait, Will wait for 10 seconds before throwing exception
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
// Launch website
driver.navigate().to("http://www.calculator.net");
driver.manage().window().maximize();
}
@Test
public void calculatepercent() {
// Click on Math Calculators
driver.findElement(By.xpath(".//*[@id='menu']/div[3]/a")).click();
// Click on Percent Calculators
driver.findElement(By.xpath(".//*[@id='menu']/div[4]/div[3]/a")).click();
// Enter value 10 in the first number of the percent Calculator
driver.findElement(By.id("cpar1")).sendKeys("10");
// Enter value 50 in the second number of the percent Calculator
driver.findElement(By.id("cpar2")).sendKeys("50");
// Click Calculate Button
driver.findElement(By.xpath(".//*[@id='content']/table/tbody/tr/td[2]/input")).click();
// Get the Result Text based on its xpath
String result =
driver.findElement(By.xpath(".//*[@id='content']/p[2]/span/font/b")).getText();
// Print a Log In message to the screen
System.out.println(" The Result is " + result);
if(result.equals("5")) {
System.out.println(" The Result is Pass");
} else {
System.out.println(" The Result is Fail");
}
}
@AfterTest
public void terminatetest() {
driver.close();
}
}
Yürütme
Yürütmek için, oluşturulan XML'e sağ tıklayın ve "Farklı Çalıştır" >> "TestNG Suite" seçeneğini seçin
Sonuç Analizi
Çıktı konsola atılır ve aşağıda gösterildiği gibi görünür. Konsol çıktısının bir yürütme özeti de vardır.
TestNG'nin sonucu da farklı bir sekmede görülebilir. Aşağıda gösterildiği gibi 'HTML Rapor Görünümü' düğmesini tıklayın.
HTML sonucu aşağıda gösterildiği gibi görüntülenecektir.