0

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

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

干杯

4

2 回答 2

1

在你的类中@Test,你需要添加一个注释:

@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. 如果您可以使用这些参数来计算到目前为止您已经运行了多少次,那就太好了。

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

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

于 2013-10-26T23:14:03.273 回答
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;
}
于 2013-10-31T01:10:49.700 回答