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.
🧩 Amaç
Section titled “🧩 Amaç”- Test senaryolarını dinamik hale getirmek
- Aynı testi farklı girdilerle çalıştırmak
- Konfigürasyon verilerini koddan ayırmak
🔧 Kullanım Şekli
Section titled “🔧 Kullanım Şekli”@Parametersanotasyonu ile test metoduna parametre ismi verilir.testng.xmldosyasında bu parametrenin değeri tanımlanır.- TestNG bu değeri çalıştırma sırasında metoda aktarır.
💻 Örnek Kod
Section titled “💻 Örnek Kod”ParameterTest.java
Section titled “ParameterTest.java”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ı!"); } }}testng.xml
Section titled “testng.xml”<!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>🧠 Çoklu Parametre Kullanımı
Section titled “🧠 Çoklu Parametre Kullanımı”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); }}testng.xml
Section titled “testng.xml”<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>⚙️ @Optional Anotasyonu
Section titled “⚙️ @Optional Anotasyonu”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.
🧾 Özet
Section titled “🧾 Özet”| Özellik | Açıklama |
|---|---|
@Parameters | XML’den parametre almak için kullanılır |
@Optional | Parametre yoksa varsayılan değer tanımlar |
XML <parameter> etiketi | Değerleri test metotlarına aktarır |
| Çoklu parametre | Virgülle ayrılmış isimlerle tanımlanır |
🚀 Gerçek Hayat Kullanımı
Section titled “🚀 Gerçek Hayat Kullanımı”- Farklı tarayıcılarla test çalıştırmak
- Farklı ortam URL’leri (dev, test, prod)
- Farklı kullanıcı hesaplarıyla giriş yapmak