</>

Technology

TestNG

Difficulty

Intermediate

Interview Question

How can we pass parameters to a test script using TestNG?

Answer

Passing Parameters to Test Scripts Using TestNG

TestNG allows passing runtime values from testng.xml to your test methods using the @Parameters annotation.

Step 1 — Define parameter in testng.xml:

XML
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<suite name="testsuite">
  <test name="sampletest">
    <parameter name="a" value="welcome" />
    <classes>
      <class name="parameterization.Test1" />
    </classes>
  </test>
</suite>

Step 2 — Use @Parameters in Java test:

Java
package parameterization;

import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class Test1 {

    @Parameters("a")
    @Test
    public void m1(String s) {
        System.out.println("The value from xml file is: " + s);
        // Output: The value from xml file is: welcome
    }
}

Practical browser parameterization:

XML
<suite name="CrossBrowserSuite">
  <test name="ChromeTest">
    <parameter name="browser" value="chrome" />
    <classes>
      <class name="tests.BrowserTest" />
    </classes>
  </test>
  <test name="FirefoxTest">
    <parameter name="browser" value="firefox" />
    <classes>
      <class name="tests.BrowserTest" />
    </classes>
  </test>
</suite>
Java
@Parameters("browser")
@BeforeClass
public void setup(String browser) {
    if (browser.equalsIgnoreCase("chrome")) {
        driver = new ChromeDriver();
    } else if (browser.equalsIgnoreCase("firefox")) {
        driver = new FirefoxDriver();
    }
}

Key rules:

  • Parameter name in testng.xml must match the string in @Parameters("name")
  • Multiple parameters: @Parameters({"browser", "url"})
  • Optional parameters: use @Optional("default value") if param may be absent

Follow AutomateQA

Related Topics