Selenium WebDriver da Extent Report Oluşturma

Herkese Merhabalar , Selenium ile yazılarıma devam ediyorum. Otomatik bir test komut dosyası başarıyla çalıştığında, test uzmanlarının bir test yürütme raporu oluşturması gerekir. TestNG varsayılan bir rapor sunsa da ayrıntıları sağlamaz .Bu nedenle yazımda sizlere çalıştırdığımız bir testin sonucunu ExtentReports ile nasıl elde edeceğimizi anlatacağım.

Extent Report ;

  1. Her test adımının grafik gösterimini elde etmek için özelleştirilebilen zengin HTML raporları sağlar.
  2. Tek bir test paketinde çalıştırılan test senaryolarını kolayca takip edebilirsiniz.
  3. Birden çok çerçeve TestNG ve JUnit ile entegrasyon kolaylaşır.
  4. Testin yürütülmesi için gereken süreyi belirlemenize yardımcı olur.
  5. Tamamen kontrol edebileceğiniz açıklayıcı bir rapor oluşturmak için önemli ekran görüntüleri, etiketler, cihazlar veya diğer ilgili bilgileri ekleyebilirsiniz.

Kurulum ile Başlayalım

İlk olarak bir önceki yazımda da belirttiğim gibi Selenium Web Driver kodlamaları için dil olarak Java ‘yı ve IDE olarak ise IntelliJ IDEA seçtim. Bu nedenle kuruluma başlamadan önce JAVA ‘nın kurulu olduğunu varsayarak adımlarıma devam edeceğim.

Maven projemizin pom.xml içerisindeki “Dependencies” tag’i altına TestNG için aşağıdaki kod eklenir. TestNG bir test kütüphanesidir. Peki ne işe yarar bu testng ? Yazılan test case’lerin paralel olarak çalıştırılması, error mesajlarının daha detaylı bir şekilde gösterilmesini sağlar, ayrıca log görüntüleyici gibi özellikleri de vardır.

<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.10</version>
<scope>test</scope>
</dependency>

Bu aşamadan sonra TestNG de olduğu gibi Extent Reposts içinde https://mvnrepository.com/artifact/com.relevantcodes/extentreports/2.41.2 adresinde yer alan içeriği Maven projemizin pom.xml içerisindeki “Dependencies” tag’i altına eklenir. Maven güncellendiği anda kurulumlar otomatik olarak yapılacaktır.

<!-- https://mvnrepository.com/artifact/com.relevantcodes/extentreports -->
<dependency>
<groupId>com.relevantcodes</groupId>
<artifactId>extentreports</artifactId>
<version>2.41.2</version>
</dependency>

Nasıl Kullanacağız ?

Kurulumların ardından artık bir test projesi üzerinden nasıl kullanabileceğimizi inceleyelim. Örnek olarak bir önceki yazımda yer verdiğim bir login sayfasına ait test durumu için rapor nasıl oluşturacağımızı anlatacağım.

Aşağıdaki kod parçacığında extent reports ile html uzantılı bir rapor oluşturup lokale kaydetme işlemleri tanımlanmıştır. Şimdi kodu inceleyerek bu işlemleri nasıl yaptığımızı daha detaylı öğrenelim.

import com.relevantcodes.extentreports.ExtentReports;
import com.relevantcodes.extentreports.ExtentTest;
import com.relevantcodes.extentreports.LogStatus;
import org.openqa.selenium.*;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;
import static java.lang.Thread.sleep;
import java.io.File;

public class Deneme{


    public ExtentReports extent ;
    public ExtentTest test;
    public  WebDriver driver = new ChromeDriver();

    @Test
    public void Giris_Sayfasi () throws Exception {
        extent = new ExtentReports("C:\\Users\\CASPER\\IdeaProjects\\test\\Rapor\\testsonucu.html",true);
        test = extent.startTest("Test Case : Sisteme Giriş İşlemleri ");

        System.setProperty("webdriver.chrome.driver","chromedriver.exe");
        driver.manage().window().maximize();
        driver.navigate().to("https://...");
        driver.get("https://...");
        driver.findElement(By.id("caps")).sendKeys("admin");
        driver.findElement(By.id("password")).sendKeys("123");
        driver.findElement(By.cssSelector("#giris_button")).click();
    sleep(1000);

    String url =driver.getCurrentUrl(); 
  
    if (url.equals("https://...")){
        test.log(LogStatus.PASS,"Kullanıcı Adı ve Şifre doğru ve sisteme giriş işlemi Başarılı.");
        test.log(LogStatus.PASS,test.addScreenCapture(capture(driver))+ "Başarılı giriş ");
        extent.endTest(test);
        extent.flush();
        sleep(500);

    }
    else {
        test.log(LogStatus.FAIL,"Kullanıcı adı veya şifre yanlış. Login işlemi başarısız.");
        test.log(LogStatus.FAIL,test.addScreenCapture(capture(driver))+ "Başarısız giriş");
        extent.endTest(test);
        extent.flush();
    }


}
public static String capture(WebDriver driver) throws IOException {
    File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
    File Dest = new File("src/../Screenshot/" + System.currentTimeMillis() + ".png");
    String errflpath = Dest.getAbsolutePath();
    FileUtils.copyFile(scrFile, Dest);
    return errflpath;
}
}
extent = new ExtentReports("C:\\Users\\CASPER\\IdeaProjects\\test\\Rapor\\testsonucu.html",true);
test = extent.startTest("Test Case : Sisteme Giriş İşlemleri ");
test.log(LogStatus.PASS,"Kullanıcı Adı ve Şifre doğru ve sisteme giriş işlemi Başarılı.");
test.log(LogStatus.PASS,test.addScreenCapture(capture(driver))+ "Başarılı giriş ");
extent.endTest(test);
extent.flush();
  • ExtentReports sınıfı, test cihazı tarafından belirtilen bir yola dayalı olarak HTML raporları oluşturur.
  • startTest : Bir test senaryosunun ön koşullarını yürütür. Test senaryosunu başlatır.
  • log : Her test adımının durumunu, oluşturulan HTML raporuna kaydeder
  • Test raporuna ekran görüntüsü ekler.
  • endTest : Bir test senaryosunu sonlandırır.
  • flush : İlgili bir rapordaki önceki verileri siler ve tamamen yeni bir rapor oluşturur

Yukarıda kod parçacıklarını genel olarak açıkladıktan sonra Giris_Sayfasi() fonksiyonununda yapılan işlemlerden biraz bahsetmek istiyorum. İlk olarak bir login sayfasına giriş yapıyoruz. Kullanıcı adı ve Şifre bilgilerini girerek giriş butonuna basıyoruz. ” driver.getCurrentUrl();” kod satırı ile mevcut sayfasının url bilgisini alıyoruz ve kontrol ediyoruz. Eğer başarılı bir şekilde giriş yapılmış ise yani kullanıcı adı ve şifre doğru ise mevcut url “https//…” olmalı die kontrol ediyoruz. Eğer başarılı bir giriş yapıldıysa test sonucu PASS olarak loglara kaydediliyor eğer mevcut url belirtilen adrese uymuyor ise giriş işlemi başarısız ve bu nedenle test FAIL olarak loglara kaydediliyor.

Yani bir test senaryosunun başarılı veya başarısız olma durumu tamamen kodlarda sizin verdiğiniz kontroller doğrultusunda rapora yansımaktadır. Aşağıda yer alan LogStatus değerleri kullanılarak test sonucunuzu detaylandırabilirsiniz.

test.log(LogStatus.PASS,"Test Passed");
test.log(LogStatus.FAIL,"Test Failed");
test.log(LogStatus.SKIP,"Test Skipped");
test.log(LogStatus.INFO,"Test Info");

Ben bu loglara ek olarak işlem adında ekran görüntüleri alarak rapora ekmeler yaptım. Giris_Sayfası() testi sonlandığı anda lokalde belirtilen adrese html uzantılı rapor oluşturulacaktır.

Aşağıdaki ekran görüntüsünde ilgili koda ait başarılı bir şekilde sonuçlanan test raporunu görüntüleyebilirsiniz.

Umuyorum yararlı bir yazı olmuştur. Bir sonraki yazımda görüşmek üzere..

                         Emine Aktürk

Yorum bırakın