TestNG Tutorial

How to create dependency between testcases in Selenium

Skip Test

I am sure you must be confused with Title like How to create a dependency between test cases in Selenium but in this post we will see this through example.

In real time, you will come across many situation where you have to create test cases which are dependent on the previous test case.

Take an example I have 3 test case.

First one which verify login credential and start application
Second test case check some validation  or do some activity
Third test case simply just for log-out activity.

If my first test case does not work (failed) that it does not make any sense to run second and third test case so in these type of scenarios you can use dependency between test case.

How can I do this?

TestNG already comes with this features so you can use the same with @Test annotations

Syntax- @Test(dependsOnMethods={"loginTestCase"})

public void testAccount()
{

// sample code

}

How to create dependency between test cases in Selenium

 

It means this test case name testAccount depends on test case whose name is loginTestCase so until loginTestCase will not execute successfully this test case won’t execute so if loginTestCase will pass this test case will execute and if loginTestCase will fail then this test case won’t execute and runner will skip this test cases and this test case will come under skip test cases.

Let’s implement the same

package Demo;

import org.testng.Assert;
import org.testng.annotations.Test;

public class TestMultiple {

@Test
public void testLogin()
{

System.out.println("login done");

}

@Test(dependsOnMethods={"testLogin"})
public void testAccount()
{
System.out.println("Account has been created");

}

@Test(dependsOnMethods={"testLogin","testAccount"})
public void testLogout()
{
System.out.println("logout");

}

}

 

In the above scenario if testLogin will pass then only testAccount will execute and testLogout will only execute of testLogin and testAccount will  be executed

but if testLogin will fail due to some error or exception the testAccount will not be executed and this test case will skip and testLogout is dependent on testLogin and testAccount so now this will also come into skipped category

Let’s implement again

import org.testng.Assert;
import org.testng.annotations.Test;

public class TestApplication {

@Test
public void testLogin()

{
Assert.assertEquals("Selenium", "Selnium");
System.out.println("login done");

}

@Test(dependsOnMethods={"testLogin"})
public void testAccount()

{
System.out.println("Account has been created");

}

@Test(dependsOnMethods={"testLogin","testAccount"})

public void testLogout()

{
System.out.println("logout");

}
}

 

Output

FAILED: testLogin
java.lang.AssertionError: expected [Selnium] but found [Selenium]
at org.testng.Assert.fail(Assert.java:94)
SKIPPED: testAccount
SKIPPED: testLogout

===============================================
Default test
Tests run: 3, Failures: 1, Skips: 2
===============================================

===============================================
Default suite
Total tests run: 3, Failures: 1, Skips: 2
===============================================

OUTPUT in HTML

Skip Test

 

For More updates Learn Automation page

For any query join Selenium group- Selenium Group

Comment below for any clarification

 

 

 

author-avatar

About Mukesh Otwani

I am Mukesh Otwani working professional in a beautiful city Bangalore India. I completed by BE from RGPV university Bhopal. I have passion towards automation testing since couple of years I started with Selenium then I got chance to work with other tools like Maven, Ant, Git, GitHub, Jenkins, Sikuli, Selenium Builder etc.

8 thoughts on “How to create dependency between testcases in Selenium

  1. Malavika says:

    Hi Mukesh

    I tried this and i got error in @AfterTest part. Logout is failing.
    I checked my Xpath. its correct. But NullPointerException is thrown. Can you please guide?

    1. Hi Malavika,

      NullPointerException is most common runtime exception which usually comes when you refer any object which is not initialized or just declared only so wrong locator never throw this exception. Kindly check/debug your code once again.

      1. Malavika says:

        HI,
        Thanks for the response. I tried again , now its showing a different error. It says the element is untraceable. but my xpath highlights the Logout button.

        Is there a way I can share screenshot with you so you can help me ?

        thanks again,
        Malavika.

        1. Hi Malavika, you can mail with a screenshot I will look into it.

  2. Rajesh Kabra says:

    What if test case 1 gets failed and test case 2 is dependent on test case 1, In that case how can we continue our execution for test case 2.
    Can we do that ?

    1. Hi Rajesh,

      It will skip second test case.

  3. Prashant says:

    Hi Mukesh,

    Superb…. Superb….. explanation on dependency. Thanks a ton.

    1. Thanks Prashant 🙂 Happy weekend.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.