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
For More updates Learn Automation page
For any query join Selenium group- Selenium Group
Comment below for any clarification
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?
Mukesh Otwani says
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.
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.
Mukesh Otwani says
Hi Malavika, you can mail with a screenshot I will look into it.
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 ?
Mukesh Otwani says
Hi Rajesh,
It will skip second test case.
Prashant says
Hi Mukesh,
Superb…. Superb….. explanation on dependency. Thanks a ton.
Mukesh Otwani says
Thanks Prashant 🙂 Happy weekend.