testNG 数据提供程序功能读取我的 excel 文件,并根据我在测试中提供的数据行数确定执行测试的次数。
我想知道有什么方法可以让 testNg 显示当前测试编号和它正在运行的测试总数。示例打印语句:“我当前正在运行测试 3 out 10”,然后下一次迭代“我当前正在运行测试 4 out of 10”。
干杯
testNG 数据提供程序功能读取我的 excel 文件,并根据我在测试中提供的数据行数确定执行测试的次数。
我想知道有什么方法可以让 testNg 显示当前测试编号和它正在运行的测试总数。示例打印语句:“我当前正在运行测试 3 out 10”,然后下一次迭代“我当前正在运行测试 4 out of 10”。
干杯
在你的类中@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
非常有用,可以帮助您做出良好的输出。
这是我使用 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;
}