如何获得数据提供程序测试的动态描述?

时间:2014-11-14 14:23:28

标签: selenium-webdriver automated-tests testng

我想对我的测试使用@DataProvider注释,例如下面的示例:

@DataProvider(name="testdata")
 public Object[][] testData(){
    return new Object[][]{
        {"http://www.google.com", "Google"}, 
        {"http://twitter.com", "Twitter"}
    };
  }

  @Test(dataProvider = "testdata")
  public void test(String url, String title) {
    driver.get(url);
    Assert.assertTrue(driver.getTitle().contains(title));
  }

在上面的例子中,我们有两个具有不同目的的测试用例,因此我希望有不同的描述。

但如果我使用@Test(dataProvider = "testdata", description = "some description"),对于这两个测试,我会有相同的描述。但是如果我想对每个测试有不同的描述,有没有办法使描述动态化并根据测试进行描述?

1 个答案:

答案 0 :(得分:0)

 @DataProvider(name="testdata")
 public Object[][] testData(){
    return new Object[][]{
        {"http://www.google.com", "Google", "description1"}, 
        {"http://twitter.com", "Twitter", "description2"}
    };
  }

  @Test(dataProvider = "testdata")
  public void test(String url, String title, Spring description) {
    driver.get(url);
    Assert.assertTrue(driver.getTitle().contains(title), description);
  }

如果您这样做,则会将描述写入每个测试用例的控制台(作为参数输出的一部分)。如果其中一个断言失败,您也会知道哪个描述失败。 我使用类似的技术来识别测试用例,当参数不具有自我描述性并且存在大量测试用例时。