Java 如何在使用数据提供程序时动态命名测试用例
如何在使用数据提供程序时动态命名测试用例,例如: 如果我有一个登录测试用例,并且我希望为不同的用户名和密码使用数据提供程序,其中每个用户代表一个国家,我将如何使测试输出失败或通过,但使用不同的测试用例名称,例如,我应该这样做:Java 如何在使用数据提供程序时动态命名测试用例,java,selenium,testng,dataprovider,Java,Selenium,Testng,Dataprovider,如何在使用数据提供程序时动态命名测试用例,例如: 如果我有一个登录测试用例,并且我希望为不同的用户名和密码使用数据提供程序,其中每个用户代表一个国家,我将如何使测试输出失败或通过,但使用不同的测试用例名称,例如,我应该这样做: loginTestUSusername pass loginTestINusername pass loginTestJPuserName pass 请注意,该方法的名称为loginTest,附加的USusername、INusername、JPusername是来自数
loginTestUSusername pass
loginTestINusername pass
loginTestJPuserName pass
请注意,该方法的名称为loginTest,附加的USusername、INusername、JPusername
是来自数据提供程序的测试数据,以供参考
“USusername”
等字符串(如示例中的“TestName1”
和“TestName2”
)以及一些其他测试数据(如示例中的数字)。将此名称作为参数传递给@Factory
注释的方法ITest
。在return语句中使用test name变量按照以下步骤操作: 第1步: 在单独的文件中创建自定义注释(即:SetTestName.java) 第2步: 创建一个基类,实现TestNG(TestNameSetter.java)的ITest接口 第三步: 使用数据提供程序,如代码段中所示:
@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");
}
就这些。现在,您将在控制台中看到相应的测试名称更改
请按照下面的链接进行查询。我希望你能在这里得到你想要的答案:
非常感谢,它的工作和在我的html报告中显示为不同的测试用例
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);
}
}
@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");
}