İçeriğe geç

TestNG Parameter Kullanımı

TestNG, test metotlarına dışarıdan değer gönderebilmemizi sağlayan güçlü bir özelliğe sahiptir.
Bu özellik, @Parameters anotasyonu ile kullanılır. Parametreler genellikle testng.xml dosyası üzerinden tanımlanır.


  • Test senaryolarını dinamik hale getirmek
  • Aynı testi farklı girdilerle çalıştırmak
  • Konfigürasyon verilerini koddan ayırmak

  1. @Parameters anotasyonu ile test metoduna parametre ismi verilir.
  2. testng.xml dosyasında bu parametrenin değeri tanımlanır.
  3. TestNG bu değeri çalıştırma sırasında metoda aktarır.

import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class ParameterTest {
@Test
@Parameters("browser")
public void launchBrowser(String browserName) {
System.out.println("Seçilen tarayıcı: " + browserName);
if (browserName.equalsIgnoreCase("chrome")) {
System.out.println("Chrome başlatılıyor...");
// WebDriver kodları burada olabilir
} else if (browserName.equalsIgnoreCase("firefox")) {
System.out.println("Firefox başlatılıyor...");
} else {
System.out.println("Desteklenmeyen tarayıcı!");
}
}
}

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Parameter Suite">
<test name="Browser Parameter Test">
<parameter name="browser" value="chrome" />
<classes>
<class name="ParameterTest" />
</classes>
</test>
</suite>

Birden fazla parametre göndermek de mümkündür.

import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class MultiParameterTest {
@Test
@Parameters({"username", "password"})
public void loginTest(String username, String password) {
System.out.println("Kullanıcı adı: " + username);
System.out.println("Şifre: " + password);
}
}
<suite name="Login Suite">
<test name="Login Test">
<parameter name="username" value="admin" />
<parameter name="password" value="1234" />
<classes>
<class name="MultiParameterTest" />
</classes>
</test>
</suite>

Bazı durumlarda parametre XML’de tanımlı olmayabilir.
Bu durumda TestNG hata verir.
Ancak @Optional anotasyonu ile varsayılan değer tanımlanabilir.

import org.testng.annotations.Optional;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class OptionalParameterTest {
@Test
@Parameters("env")
public void testEnvironment(@Optional("prod") String environment) {
System.out.println("Test ortamı: " + environment);
}
}

Eğer testng.xml içinde env parametresi tanımlı değilse,
“prod” değeri otomatik olarak kullanılacaktır.


ÖzellikAçıklama
@ParametersXML’den parametre almak için kullanılır
@OptionalParametre yoksa varsayılan değer tanımlar
XML <parameter> etiketiDeğerleri test metotlarına aktarır
Çoklu parametreVirgülle ayrılmış isimlerle tanımlanır

  • Farklı tarayıcılarla test çalıştırmak
  • Farklı ortam URL’leri (dev, test, prod)
  • Farklı kullanıcı hesaplarıyla giriş yapmak