TestNG Parameters and DataProvider

TestNG Parameters

Everybody knows the importance of Parameterization in testing and in automation testing. It allows us to automatically run a test case multiple times with different input and validation values. As Selenium Webdriver is more an automated testing framework than a ready-to-use tool, you will have to put in some effort to support data driven testing in your automated tests. I usually prefer to use Microsoft Excel as the format for storing my parameters but so many of my followers have requested to write an article on TestNG Data Provider.

TestNG again gives us another interesting feature called TestNG Parameters. TestNG lets you pass parameters directly to your test methods with your testng.xml.

How to do it…

Let me take a very simple example of LogIn application, where the username and password is required to clear the authentication.

1) Create a test on my demo OnlineStore application to perform LogIn which takes the two string argument as username & password.

2) Provide Username & Password as parameter using TestNG Annotation.

3) The parameter would be passed values from testng.xml which we will see in the next step.

Now, run the testng.xml, which will run the parameterTest method. TestNG will try to find a parameter named sUsername & sPassword.

 

TestNG DataProviders

When you need to pass complex parameters or parameters that need to be created from Java (complex objects, objects read from a property file or a database, etc…), in such cases parameters can be passed using Dataproviders. A Data Provider is a method annotated with @DataProvider. A Data Provider returns an array of objects.

Let us check out the same Sign In examples using Dataproviders.

How to do it…

1)  Define the method credentials() which is defined as a Dataprovider using the annotation. This method returns array of object array.

2) Add a method test() to your DataProviderTest class. This method takes two strings as input parameters.

3) Add the annotation @Test(dataProvider = “Authentication”) to this method. The attribute dataProvider is mapped to “Authentication”.

Test will look like this:

package automationFramework;


import java.util.concurrent.TimeUnit;


import org.openqa.selenium.By;


import org.openqa.selenium.WebDriver;


import org.openqa.selenium.firefox.FirefoxDriver;


import org.testng.annotations.DataProvider;


import org.testng.annotations.Test;


public class DataProviderTest {


<span style="white-space:pre">	</span>private static WebDriver driver;


  @DataProvider(name = "Authentication")


  public static Object[][] credentials() {


        return new Object[][] { { "testuser_1", "Test@123" }, { "testuser_1", "Test@123" }};


  }


  // Here we are calling the Data Provider object with its Name
@Test(dataProvider = "Authentication")

  public void test(String sUsername, String sPassword) {

	  driver = new FirefoxDriver();

      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

      driver.get("http://www.store.demoqa.com");

      driver.findElement(By.xpath(".//*[@id='account']/a")).click();

      driver.findElement(By.id("log")).sendKeys(sUsername);

      driver.findElement(By.id("pwd")).sendKeys(sPassword);

      driver.findElement(By.id("login")).click();

      driver.findElement(By.xpath(".//*[@id='account_logout']/a")).click();

      driver.quit();

  }

}


Run the test by right click on the test case script and select Run As >TestNG Test. Give it few minutes to complete the execution, once it is finished the results will look like this in theTestNg Result window.

Note: As the test data is provided two times, the above test executed two times completely.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值