How we can name the test case dynamically when using data provider, for example:
If I have a login test case, and I want use data provider for different user name and password, where each user represent a country, how I will have the output of test failed or pass but with different test case name for instance I should have like this:
loginTestUSusername pass
loginTestINusername pass
loginTestJPuserName pass
Note that the name of the method is loginTest, and the appended USusername,INusername,JPusername
are the test data from the data provider
Follow the steps below:
Step# 1:
Create a custom annotation in a separate file (ie: SetTestName.java)
@Retention(RetentionPolicy.RUNTIME)
public @interface SetTestName {
int idx() default 0;
}
Step# 2:
Create a base class implementing ITest interface of TestNG (TestNameSetter.java).
public class TestNameSetter implements ITest{
private String newTestName = "";
private void setTestName(String newTestName){
this.newTestName = newTestName;
}
public String getTestName() {
return newTestName;
}
@BeforeMethod(alwaysRun=true)
public void getTheNameFromParemeters(Method method, Object [] parameters){
SetTestName setTestName = method.getAnnotation(SetTestName.class);
String testCaseName = (String) parameters[setTestName.idx()];
setTestName(testCaseName);
}
}
Step# 3:
Use your DataProvider like in the code snippet:
@DataProvider(name="userData")
public Object[][] sampleDataProvider()
{
Object[][] data = {
{"loginTestUS_Username","loginTestUSPass"},
{"loginTestIN_Username","loginTestINPass"},
{"loginTestJP_UserName","loginTestJPPass"}
};
return data;
}
@SetTestName(idx=0)
@Test(dataProvider="userData")
public void test1(String userName, String pass)
{
System.out.println("Testcase 1");
}
@SetTestName(idx=1)
@Test(dataProvider="userData")
public void test2(String userName, String pass)
{
System.out.println("Testcase 2");
}
That's all. Now, you will see your test name changed accordingly in the console.
Follow the link below for your query. I hope, you might get your desired answer here:
http://biggerwrench.blogspot.com/2014/02/testng-dynamically-naming-tests-from.html
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With