2014-11-14 60 views
1

我想用@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"),对于这两个测试,我将有相同的描述。但是如果我想对每个测试都有不同的描述,是否有任何方法使描述具有动态性并根据测试进行描述?

回答

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

如果你正在这样做,每个测试用例(作为参数输出的一部分)都会向控制台写入描述。如果其中一个断言失败,你也会知道哪个描述失败了。 我使用类似的技术来识别测试用例,当参数不是自描述性的,并且有很多测试用例。