TestNG:如何使用DataProvider提供的数据顺序执行多个测试方法

TestNG:如何使用DataProvider提供的数据顺序执行多个测试方法,testng,dataprovider,Testng,Dataprovider,是否有一种方法可以使用来自数据提供程序的不同数据执行多个测试方法 e、 g 运行此命令的输出将是 塞德里克36 验证2 安妮37 验证2这里有一种方法:使用注释指定哪个方法应该接收哪个数据: public class A { @DataProvider public Object[][] dp(Method m) { if (m.getAnnotation(Different.class) != null) { return new Object[][] {

是否有一种方法可以使用来自数据提供程序的不同数据执行多个测试方法

e、 g

运行此命令的输出将是
塞德里克36
验证2
安妮37

验证2

这里有一种方法:使用注释指定哪个方法应该接收哪个数据:

public class A {

  @DataProvider
  public Object[][] dp(Method m) {
    if (m.getAnnotation(Different.class) != null) {
      return new Object[][] {
          new Object[] { "different-a", "different-b" },
          new Object[] { "different-c", "different-d" },
        };
      } else {
        return new Object[][] {
            new Object[] { "c", "d" },
            new Object[] { "a", "b" },
        };
      }
    }

  @Test(dataProvider = "dp")
  public void test1(String a, String b) {
    System.out.println("test1: " + a + " " + b);
  }

  @Different
  @Test(dataProvider = "dp")
  public void test2(String a, String b) {
    System.out.println("test2: " + a + " " + b);
  }
}
注释:

@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@Target({METHOD})
public @interface Different {}
输出:

test1: c d
test1: a b
test2: different-a different-b
test2: different-c different-d

为什么不在该类中使用多个数据提供程序

@DataProvider(name = "test1")
public Object[][] createData1() {
    return new Object[][] {
        { "Cedric", new Integer(36) },
        { "Anne", new Integer(37)}, 
    };
}

@DataProvider(name = "test2")
public Object[][] createData2() {
    return new Object[][] {
        { "Amir", new Integer(42) },
        { "Alice", new Integer(39)}, 
    };
}


@Test(dataProvider = "test1")
public void verifyData1(String n1, Integer n2) {
    System.out.println(n1 + " " + n2);
}

@Test(dataProvider = "test2")
public void verifyData2(String n1, Integer n2) {
    System.out.println(n1 + " " + n2);
}

谢谢塞德里克。当我仔细阅读TestNG文档时,我发现了一种方法,然后注意到我可以指定groupbyinstances=“true”按顺序运行测试。因为我遵循的场景包含许多测试断言和许多不同的数据,所以我使用@Factory创建testclass实例,向其提供不同的数据,然后按顺序运行它们。
@DataProvider(name = "test1")
public Object[][] createData1() {
    return new Object[][] {
        { "Cedric", new Integer(36) },
        { "Anne", new Integer(37)}, 
    };
}

@DataProvider(name = "test2")
public Object[][] createData2() {
    return new Object[][] {
        { "Amir", new Integer(42) },
        { "Alice", new Integer(39)}, 
    };
}


@Test(dataProvider = "test1")
public void verifyData1(String n1, Integer n2) {
    System.out.println(n1 + " " + n2);
}

@Test(dataProvider = "test2")
public void verifyData2(String n1, Integer n2) {
    System.out.println(n1 + " " + n2);
}