gpt4 book ai didi

java - 我们如何在使用数据提供者时动态命名测试用例

转载 作者:搜寻专家 更新时间:2023-11-01 02:58:43 28 4
gpt4 key购买 nike

我们如何在使用数据提供者时动态命名测试用例,例如:

如果我有一个登录测试用例,我想为不同的用户名和密码使用数据提供者,其中每个用户代表一个国家,我将如何获得测试失败或通过但具有不同测试用例名称的输出我应该这样:

loginTestUSusername pass
loginTestINusername pass
loginTestJPuserName pass

注意方法名是loginTest,后面的USusername,INusername,JPusername是来自data provider的测试数据

最佳答案

按照以下步骤操作:

第 1 步:

在单独的文件中创建自定义注释(即:SetTestName.java)

@Retention(RetentionPolicy.RUNTIME)
public @interface SetTestName {
int idx() default 0;
}

第 2 步:

创建一个实现 TestNGITest 接口(interface)的基类 (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);
}
}

第 3 步:

像在代码片段中那样使用您的 DataProvider:

@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");
}

就是这样。现在,您将在控制台中看到相应更改的测试名称。

点击下面的链接进行查询。我希望,您可能会在这里得到您想要的答案:

http://biggerwrench.blogspot.com/2014/02/testng-dynamically-naming-tests-from.html

关于java - 我们如何在使用数据提供者时动态命名测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43748076/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com