testNG数据提供程序功能读取我的excel文件,并根据我在测试中提供的数据行数来确定执行测试的次数。
我想知道有什么方法可以让testNg显示正在运行的当前测试编号和测试总数。示例打印语句:“我目前正在运行测试3出10”,然后是下一次迭代“我目前正在运行测试4中的10个。”
干杯
答案 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;
}