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
public class TestNGbasics3 {
@Test(invocationCount=10)
public void method1(){
System.out.println("PRINTING 10 IMES");
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[][] data= new 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
Post a Comment