SELENIUM: @DataProvider In TESTNG:
1.By
Using @DataProvider,we can pass the multiple sets of data to the Testmethod
based on our requirement (OR) Marks a method as supplying data for a test method.
2.The annotated method
must return an Object[][] where each Object[] can be assigned the parameter
list of the test method.
3.The @Test method that
wants to receive data from this DataProvider needs to use a dataProvider name
equals to the name of this annotation.
4.The name of this data
provider. If it's not supplied, the name of this data provider will
automatically be set to the name of the method.
5. In @dataProvider by default parallel=false.
If we write "parallel=true"
then the @Test method will run
parallelly i,e this method runs parallelly
on multiple threads.
syntax:
@DataProvider(name="dataProviderName",parallel=true)
public
Object[][] methodName()
{
Object[][]
obj=new Object[rows][columns];
;;;;
;;;;;
;;;;
return
obj;
}
@DataProvider is
always going to return Two-Dimensional array.
In
DataProvider Two dimensional arrays,'rows' indicates how many times you
want to repeat the testcase and 'columns' indicates number of inputs(for
how many webelements you want to pass the data).we need to pass rows and
columns in the form of integer values.
DataProvider
name can be anything,but it should be meaningful.
Example:
package
com.rameshsoft.rameshselenium;
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.BeforeClass;
import
org.testng.annotations.BeforeMethod;
import
org.testng.annotations.BeforeTest;
import
org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class
DataProviderDemo {
static
String uname;
static
String pwd;
@BeforeClass
public
void beforeClass()
{
System.out.println("Before
class executing");
}
@BeforeTest
public
void beforeTest()
{
System.out.println("Before
test executing");
}
@BeforeMethod
public
void beforeMethod()
{
System.out.println("Before
@test executing");
}
@Test(dataProvider="dataProvider1")
public
void execute(String username,String password) throws InterruptedException
{
uname=username;
pwd=password;
System.out.println(uname);
System.out.println(pwd);
System.setProperty("webdriver.gecko.driver",
"C:\\Users\\ramesh\\Desktop\\java\\desk\\geckodriver-v0.11.1-win64\\geckodriver.exe");
WebDriver driver=new
FirefoxDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(50,TimeUnit.SECONDS);
driver.get("https://www.gmail.com");
driver.findElement(By.id("Email")).sendKeys(uname);
driver.findElement(By.id("next")).click();
Thread.sleep(2000);
driver.findElement(By.id("Passwd")).sendKeys(pwd);
driver.findElement(By.id("signIn")).click();
driver.quit();
}
@DataProvider(name="dataProvider1",parallel=true)
public
Object[][] values()
{
Object[][]
obj=new Object[2][2];
obj[0][0]="rameshsoft.selenium@gmail.com";
obj[0][1]="123456";
obj[1][0]="rameshatbtech@gmail.com";
obj[1][1]="123456899";
return
obj;
}
}
OUTPUT:
Before test executing
Before class executing
Before @test executing
Before @test executing
rameshatbtech@gmail.com
123456899
rameshsoft.selenium@gmail.com
123456
if parallel=false in @DataProvider
then output as follows
Before test executing
Before class
executing
Before @test
executing
rameshsoft.selenium@gmail.com
123456
Before @test executing
rameshatbtech@gmail.com
123456899
No comments:
Post a Comment