Dependency on 'single' Test Methods , 'Multiple' test methods:
In TestNG, dependencies between test methods can be defined using the dependsOnMethods attribute of the @Test annotation. This allows you to specify that a
particular test method should only be executed if certain other test methods
have been successfully executed.
package TestNGAsserionsBasics;
import org.testng.annotations.Test;
public class TestMethodWithDependency {
@Test
public void
login()
{
System.out.println("in
login ");
// add some excpetion and check
// throw
new NullPointerException();
// Assert.assertTrue(false); //
making this method failing
// it will check given value is true or not
// if
given value is true- it will pass test method
// if
given value is false -it will fail test method
}
// Define
dependency for Test method=
// this test
method depends on login test method,
//if login method
is failing. it will not execute create order method
// it will skip
createorder method
@Test(dependsOnMethods
= "login")
public void
createOrder()
{
System.out.println("createOrder
");
}
}
o/p:
[RemoteTestNG] detected TestNG version 7.0.0
in login
FAILED: login
java.lang.AssertionError: did not expect to find [true] but found
[false]
at
org.testng.Assert.fail(Assert.java:97)
at
org.testng.Assert.failNotEquals(Assert.java:969)
at
org.testng.Assert.assertTrue(Assert.java:43)
at org.testng.Assert.assertTrue(Assert.java:53)
at
TestNgBasics.TestAnontWithDependencyOnMethod.login(TestAnontWithDependencyOnMethod.java:14)
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at
java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:133)
at
org.testng.internal.TestInvoker.invokeMethod(TestInvoker.java:584)
at
org.testng.internal.TestInvoker.invokeTestMethod(TestInvoker.java:172)
at
org.testng.internal.MethodRunner.runInSequence(MethodRunner.java:46)
at
org.testng.internal.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:804)
at
org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:145)
at
org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
at
org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128)
at
java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at
org.testng.TestRunner.privateRun(TestRunner.java:770)
at
org.testng.TestRunner.run(TestRunner.java:591)
at
org.testng.SuiteRunner.runTest(SuiteRunner.java:402)
at
org.testng.SuiteRunner.runSequentially(SuiteRunner.java:396)
at
org.testng.SuiteRunner.privateRun(SuiteRunner.java:355)
at
org.testng.SuiteRunner.run(SuiteRunner.java:304)
at
org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
at
org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96)
at
org.testng.TestNG.runSuitesSequentially(TestNG.java:1180)
at
org.testng.TestNG.runSuitesLocally(TestNG.java:1102)
at
org.testng.TestNG.runSuites(TestNG.java:1032)
at
org.testng.TestNG.run(TestNG.java:1000)
at
org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)
at
org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
SKIPPED: createOrder
java.lang.Throwable: Method
TestAnontWithDependencyOnMethod.createOrder()[pri:0,
instance:TestNgBasics.TestAnontWithDependencyOnMethod@76ed1b7c] depends on not
successfully finished methods
at
org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:99)
at
org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
at
org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at
org.testng.TestRunner.privateRun(TestRunner.java:770)
at
org.testng.TestRunner.run(TestRunner.java:591)
at
org.testng.SuiteRunner.runTest(SuiteRunner.java:402)
at
org.testng.SuiteRunner.runSequentially(SuiteRunner.java:396)
at
org.testng.SuiteRunner.privateRun(SuiteRunner.java:355)
at
org.testng.SuiteRunner.run(SuiteRunner.java:304)
at
org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
at
org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96)
at
org.testng.TestNG.runSuitesSequentially(TestNG.java:1180)
at
org.testng.TestNG.runSuitesLocally(TestNG.java:1102)
at
org.testng.TestNG.runSuites(TestNG.java:1032)
at
org.testng.TestNG.run(TestNG.java:1000)
at
org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)
at
org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at
org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
===============================================
Default test
Tests run: 2, Failures:
1, Skips: 1
===============================================
===============================================
Default suite
Total tests run: 2, Passes: 0, Failures: 1, Skips: 1
===============================================
alwaysRun = true:
package TestNGAsserionsBasics;
import org.testng.Assert;
import org.testng.annotations.Test;
public class TestMethodWithDependency {
@Test
public void
login()
{
System.out.println("in
login ");
Assert.assertTrue(false); //
making this method failing
// fail
}
// even if
dependent method i.e login() is failing,
it will execute current test method always
//i.e createOrder method by writing alwaysRun = true
@Test(dependsOnMethods
= "login", alwaysRun = true)
public void
createOrder()
{
System.out.println("createOrder
");
}
}
o/p:
[RemoteTestNG] detected TestNG version 7.0.0
in login
createOrder
PASSED: createOrder
FAILED: login
java.lang.AssertionError: did not expect to find [true] but found
[false]
at org.testng.Assert.fail(Assert.java:97)
at
org.testng.Assert.failNotEquals(Assert.java:969)
at
org.testng.Assert.assertTrue(Assert.java:43)
at
org.testng.Assert.assertTrue(Assert.java:53)
at
TestNgBasics.TestAnontWithDependencyOnMethod2.login(TestAnontWithDependencyOnMethod2.java:14)
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at
java.base/java.lang.reflect.Method.invoke(Method.java:564)
at
org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:133)
at
org.testng.internal.TestInvoker.invokeMethod(TestInvoker.java:584)
at
org.testng.internal.TestInvoker.invokeTestMethod(TestInvoker.java:172)
at
org.testng.internal.MethodRunner.runInSequence(MethodRunner.java:46)
at
org.testng.internal.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:804)
at
org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:145)
at
org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
at
org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128)
at
java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at
org.testng.TestRunner.privateRun(TestRunner.java:770)
at
org.testng.TestRunner.run(TestRunner.java:591)
at
org.testng.SuiteRunner.runTest(SuiteRunner.java:402)
at
org.testng.SuiteRunner.runSequentially(SuiteRunner.java:396)
at
org.testng.SuiteRunner.privateRun(SuiteRunner.java:355)
at
org.testng.SuiteRunner.run(SuiteRunner.java:304)
at
org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96)
at
org.testng.TestNG.runSuitesSequentially(TestNG.java:1180)
at
org.testng.TestNG.runSuitesLocally(TestNG.java:1102)
at
org.testng.TestNG.runSuites(TestNG.java:1032)
at
org.testng.TestNG.run(TestNG.java:1000)
at
org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)
at
org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at
org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
===============================================
Default test
Tests run: 2, Failures:
1, Skips: 0
===============================================
===============================================
Default suite
Total tests run: 2, Passes: 1, Failures: 1, Skips: 0
===============================================
Dependency
on "Multiple" Test methods:
package TestNGAsserionsBasics;
import org.testng.Assert;
import org.testng.annotations.Test;
public class TestMethodWithDependency2 {
@Test
public void
login()
{
System.out.println("in
login ");
Assert.assertTrue(false); //
making this method failing
}
@Test
public void
connectDB()
{
System.out.println("in
connectDB ");
}
// depends on methods =
"login","connectDB, alwaysRun = true
// even if dependent method
i.e login is failing, it will execute
current test method i.e
// createOrder method
// @Test(dependsOnMethods
= {"login","connectDB"})
@Test(dependsOnMethods
= {"login","connectDB"},alwaysRun = true)
public void
createOrder()
{
System.out.println("createOrder
");
}
}
o/p:
[RemoteTestNG] detected TestNG version 7.0.0
in connectDB
in login
createOrder
PASSED: connectDB
PASSED: createOrder
FAILED: login
java.lang.AssertionError: did not expect to find [true] but found
[false]
at
org.testng.Assert.fail(Assert.java:97)
at
org.testng.Assert.failNotEquals(Assert.java:969)
at
org.testng.Assert.assertTrue(Assert.java:43)
at
org.testng.Assert.assertTrue(Assert.java:53)
at
TestNgBasics.TestAnontWithDependencyOnMethod2.login(TestAnontWithDependencyOnMethod2.java:14)
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at
java.base/java.lang.reflect.Method.invoke(Method.java:564)
at
org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:133)
at
org.testng.internal.TestInvoker.invokeMethod(TestInvoker.java:584)
at
org.testng.internal.TestInvoker.invokeTestMethod(TestInvoker.java:172)
at
org.testng.internal.MethodRunner.runInSequence(MethodRunner.java:46)
at
org.testng.internal.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:804)
at
org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:145)
at
org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
at
org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128)
at
java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at
org.testng.TestRunner.privateRun(TestRunner.java:770)
at
org.testng.TestRunner.run(TestRunner.java:591)
at
org.testng.SuiteRunner.runTest(SuiteRunner.java:402)
at
org.testng.SuiteRunner.runSequentially(SuiteRunner.java:396)
at
org.testng.SuiteRunner.privateRun(SuiteRunner.java:355)
at
org.testng.SuiteRunner.run(SuiteRunner.java:304)
at
org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96)
at
org.testng.TestNG.runSuitesSequentially(TestNG.java:1180)
at
org.testng.TestNG.runSuitesLocally(TestNG.java:1102)
at
org.testng.TestNG.runSuites(TestNG.java:1032)
at org.testng.TestNG.run(TestNG.java:1000)
at
org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)
at
org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at
org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
===============================================
Default test
Tests run: 3, Failures:
1, Skips: 0
===============================================
===============================================
Default suite
Total tests run: 3, Passes: 2, Failures: 1, Skips: 0
===============================================
No comments:
Post a Comment