testng数据提供者显示当前测试编号

时间:2013-10-26 18:07:29

标签: testng

testNG数据提供程序功能读取我的excel文件,并根据我在测试中提供的数据行数来确定执行测试的次数。

我想知道有什么方法可以让testNg显示正在运行的当前测试编号测试总数。示例打印语句:“我目前正在运行测试3出10”,然后是下一次迭代“我目前正在运行测试4中的10个。”

干杯

2 个答案:

答案 0 :(得分:1)

在您的@Test s课程中,您需要添加注释:

@Listeners({TestListener.class})
public class SomeTestClass {

然后您的Listener类将如下所示:

public class TestListener extends TestListenerAdapter {
   @Override
   public void onTestStart(ITestResult result){
       ...fancy code to output...
   }
}

那个花哨的代码可能是不同的东西。

result.getParameters()会为您提供传递给@Test的参数。如果您可以使用参数来确定到目前为止运行它的次数,那就太棒了。

你可以有一个静态整数来存储当前的run through(或者是一个将测试名称映射到运行次数的字符串和整数的静态映射。

但是,我认为显示Running test 1 of 10并不是那么有用。但是,我使用侦听器输出信息,我认为result.getParameters()result的其他功能非常有用,可以帮助您获得良好的输出。

答案 1 :(得分:0)

这是我使用Excel数据时使用的解决方法。 在Excel工作表中,创建一个名为TestRowNumber的列作为测试数据中的第一列。在第一个单元格 = ROW()中使用此公式,并将其复制到其下方的所有其他单元格中。此公式将自动为电子表格中的每一行编号。

然后Java代码看起来像这样:

@Test(dataProvider = "DP_ourTest", invocationCount = 1, priority=2, enabled = true)
    public void ourTest(String... excelData) throws Exception {

//This will grab the value of the first data column (index 0) if your Excel Data. 
setTestNumber(Integer.parseInt(excelData[0])-1);


//And in a separate method or class you would set this testnumber data for each run

public static int testNumber;
// getter for TestNumber: this tells the Data source which row to start from
public static int getTestNumber() {
    return testNumber;
}
// setter for TestNumber: this tells the Data source which row to start from
public void setTestNumber(int testNumber) {
    this.testNumber = testNumber;
}