是否可以为每个测试方法指定来自DataProvider的数据。我做过这样的东西。
@DataProvider(name = "loginData")
public Object[][] getData(Method m) {
if (m.getName().equalsIgnoreCase("testValidLogin")) {
return new Object[][]{
{"aaa", "qwe123!"}
};
}
if (m.getName().equalsIgnoreCase("testSendMail")){
return new Object[][]{
{"Test@test", "Test", "Hi there!"}
};
} else {
return new Object[][]{
{"12312312","123qwe"},
};
}
}`
有没有更好的方法?我可以为两种测试方法指定一个数据集吗?谢谢
如果测试数据与测试方法相关,最好将其保留在测试方法中,或创建单独的数据提供程序。
另外一个选项是使用测试上下文,并将所需参数从before方法传递给测试方法。
或者你可以构建这样的东西:
public class DataProviderPerMethod {
@DataProvider(name = "provider")
public Object[][] provider(Method method) {
List<TestData> options = Arrays.asList(method.getAnnotation(TestDataOptions.class).value());
int optionsSize = options.size();
int optionLength = Objects.requireNonNull(options.get(0)).value().length;
Object[][] result = new Object[optionsSize][optionLength];
IntStream.range(0, optionsSize).forEach(i -> result[i] = options.get(i).value());
return result;
}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Repeatable(TestDataOptions.class)
public @interface TestData {
String[] value();
}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface TestDataOptions {
TestData[] value();
}
@TestDataOptions({
@TestData({"1", "string"}),
@TestData({"2", "else one string"})
})
@Test(dataProvider = "provider")
public void verifyTestData(String first, String second) {
System.out.println(first);
System.out.println(second);
}
}
我在java testng测试中使用allure testng(2.12.1)适配器。我有使用@DataProvider的测试。我的测试实现了ITest,以在运行时更改测试方法实例名称。当我运行测试时,我看到了不同的测试方法名称,但在allure报告中,它为每个测试运行显示了相同的测试方法。如何配置诱惑报告以显示类似IDE的内容? 预期:测试一测试二测试三 实际:myTest myTest myT
我有maven测试项目如下: pom.xml testng.xml 跟踪测试。JAVA 当我尝试运行“mvn test”命令时,它运行得很好,但当我尝试使用maven命令运行特定的测试类(如“mvn test-Dtest=TrackerTest”)时,它会引发如下异常: 看起来使用maven命令运行特定的测试类并没有尝试从testng获取参数。xml,我也尝试过类似“mvn test-Dtest=
我正在尝试使用TestNG构建一个Selenium混合框架,从excel数据表中获取数据。我试图使用testNG的DataProvider,但问题是因为我的数据表包含属于不同测试用例的数据(例如,2行用于添加用户,1行用于修改用户,一些行用于搜索用户等) 因为我的数据提供商将返回数据表中的所有数据,并将其传递给任何特定的测试案例,这将为所有行的数据提供商运行将导致问题(例如,创建用户将需要5个参数
本文向大家介绍特定测试方法的执行如何依赖于TestNG中的其他测试方法?,包括了特定测试方法的执行如何依赖于TestNG中的其他测试方法?的使用技巧和注意事项,需要的朋友参考一下 可以在dependsOnMethods helper属性的帮助下,使特定测试方法的执行依赖于另一个测试方法。 示例 在Java类文件中,只有在该方法成功运行后,才会执行verifyLoan()方法。但是方法独立运行,而无
我有一个testng xml文件,它被设置为运行一个特定的类,该类的方法包含以下组标记或被分组为以下类型之一: 并行测试 顺序测试 烟雾测试 虽然我的一些测试被指定为并行或顺序测试,但一些测试可能包含一个额外的标签“冒烟测试”。在这个场景中,我希望能够只运行那些被归类为“烟雾测试”的组件。当我运行测试时,它要么找不到任何测试,要么只是运行所有分组为“sequential-test”的测试。我似乎不
定义一个普通的设置方法,并在每个方法的开头调用; 将方法与依赖于它的所有方法一起移动到一个新类(顶级类或内部类)。 两者都不理想,我希望保持测试的自然分组和清洁,而不是由于缺乏替代方案而分裂。