Skip to main content

TestNG Annotation- Dataprovider and Test Reporting via Index.html

 




TestNG Annotation is a piece of code which is inserted inside a program or business logic used to control the flow of execution of test methods

Lets go through  few TestNG annotation

Some Basic TestNG annotation

@Before suite

@BeforeClass

@BeforeMethod

@BeforeTest

@Test

@AfterTest

@AfterMethod

@AfterClass

@AfterSuite

@BeforeSuite


You can validate them by writing the below code


public void setup(){

System.out.println("Before suite");

}


@BeforeClass


public void LaunchBrowser(){

System.out.println("Before class");

}


@BeforeMethod


public void EnterUrl(){

System.out.println("Before Method");

}


@BeforeTest

public void Login(){

System.out.println("Before Test");



}


 Priority and Groups

//priority and groups are keyword give to @test to prioritise which test annotation should be run first

priority 1 will run first then second and third so on

Keyword group will create title in index.html and the test case will open with the names of Homepage, booking checkout and login. 

@Test(priority=3,groups="Home page")

public void checkbox(){

System.out.println("Test3");


}

@Test (priority=1, groups="Booking")

public void Title(){

System.out.println("Test1");

}


@Test(priority=4,groups="checkout")

public void dropdown(){

System.out.println("Test4");

}

@Test(priority=2, groups="Login")

public void Textbox(){

System.out.println("Test2");

}


@AfterTest

public void cookies(){

System.out.println("After test");


}


@AfterMethod

public void logout(){

System.out.println("After Method");

}

@AfterClass


public void classBrowser(){

System.out.println("After class");

}

@AfterSuite


public void testreport(){

System.out.println("After suite");

}


}


Check out the result


Check out the test result in Index.html

You can check out the exceution of program  here
 

Invocation count
if you want to execute same test case 10 times then you must mention @Test(invocationCount=10)

public class TestNGbasics3 {

@Test(invocationCount=10)

public void method1(){

System.out.println("PRINTING 10 IMES");


Invocation time out and expectedExceptions

If you want a loop or infinite loop to break after 2 second of execution then you must mention

@Test(invocationTimeOut=2)


public class TestNgbasic4{

@Test(invocationTimeOut=2)

                           public void infinteloop1(){

                           int i=1;

                           while(i==1)

                                     {

                                       System.out.println("i");

                                      }


                                              }

If you want to handle exception via TestNG keyword then use  "expected Exceptions"

@Test(expectedExceptions=NumberFormatException.class)

public void test()

{

String x ="100A";

System.out.println(x);

}

                         }



Dataprovider in TestNG that allows us to pass multiple parameters to a single test in a single execution .using Dataprovider, we can easily pass multiple values to a test in just one execution cycle using DataProvider we can easily inject multiple values into the same test case. It comes inbuilt in TestNG and is popularly used in data-driven frameworks


here is the code for Data provider

public class Dataprovider

{

@Test(dataProvider = "LoginDataProvider")

     public void loginfb(String Uid,String Pwd)

        {

System.setProperty("Webdriver.chrome.driver", "chromedriver");

    WebDriver driver = new ChromeDriver();

    driver.manage().window().maximize();

    driver.manage().deleteAllCookies();

    driver.get("https://www.facebook.com");

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

driver.findElement(By.xpath("//input[@id='email']")).sendKeys(Uid);

driver.findElement(By.xpath("//input[@id='pass']")).sendKeys(Pwd);

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

driver.findElement(By.xpath("//button[@type='submit']")).click();

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

          System.out.println("Username is " + Uid);

          System.out.println("Password is " + Pwd);


        }

//the data provider’s name will automatically be set to the method’s name. returns array of objects

//“Logindataprovider” is the name of the function which is passing the test data. 


     @DataProvider(name="LoginDataProvider")


     public Object[][] getData()

          {

        

         Object[][] datanew Object[3][2];


        

               data[0][0] ="user1";

               data[0][1] ="password1";


               data[1][0] ="user2";

               data[1][1] ="password1";


               data[2][0] ="user3";

               data[2][1] ="Password3";

               return data;


You can check the execution here



Comments

Popular posts from this blog

Automating Flipkart via selenium

                                            Hi Folks, we are automating a flipkart site where you will see how to search and filter the product you choose without logging in . import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.support.ui.Select; import org.testng.annotations.Test; public class flipkart { WebDriver driver ; @Test       public void test()       {   System.setProperty( "Webdriver.chrome.driver" , "chromedriver" );     WebDriver driver = new ChromeDriver();   driver .manage().timeouts().implicitlyWait(5, TimeUnit. SECONDS );   driver .manage().window().maximize();          driver .get( "https://www.flipkart.com" );   ...

Cucumber - Execution of test cases and reporting

Before going through this blog please checkout blog on   Cucumber Fundamentals Cucumber is testing tool which implements BDD(behaviour driven development).It offers a way to write tests that  anybody can understand, regardless of there technical knowledge. It users Gherkin (business readable language) which helps to  describe behaviour without going into details of implementation It's helpful for  business stakeholders who can't easily read code ( Why cucumber tool,  is  called  cucumber , I have no idea if you ask me I could have named it "Potato"(goes well with everything and easy to understand 😂) Well, According to its founder..... My wife suggested I call it  Cucumber  (for no particular reason), so that's how it got its  name . I also decided to give the Given-When-Then syntax a  name , to separate it from the  tool . That's why it's  called  Gherkin ( small variety of a cucumber that's been pickled. I...

Mac OS- Error - eclipse (JVM) while updating Catalina to Big Sur

  Hi, As you have received your new OS update Big Sur 11 from Catalina 10  You might be facing issue of eclipse throwing an error "failed to create Java virtual machine". This a bug already reported to the community and you will find many confusing solution to fix the issue I'll explain you in simple steps how to fix this issue. Press keys (command_shift+G) make sure while pressing these buttons your mouse is pointing on desktop   Go to folder, A window will open  where you have to enter. " /Library/Java/JavaVirtualMachines " and press Go it will take you the version installed of JDK in your machine in my case it is jdk1.8.0_241.jdk shown as below you need to find the eclipse installed in your system it can be under application(which can be found in Finder) in my case it was present in home directory under software folder   click on eclipse and go to "show package contents"  Open "contents" folder check the file "info.pilst". open ...