0

我创建了一个包含多行的 excel,每一行对应一个测试用例。Excel 有大约 22 列(参数),包括一个“标志”列。

我希望 Dataprovider 仅返回那些在 excel 列中具有值“Y”的列。用例是,当客户端想要运行特定的测试用例时,他们只需要将其标记为 Y 或 N。在带有 Selenium 的 TestNG 中如何实现这一点?

我的同事使用以下代码帮助我实现了这一点,但这不适用于我的新代码结构。

@DataProvider(name = "Order") 
     public Object[][] menu() 
     { 
         Object[][] data = UtilLibrary.getData("Order");
         int intColCount = UtilLibrary.datatable.getColumnCount("Order");

         int j = 0; 
         int arrRowCount=0; 
         for (int i = 0; i < data.length; i++) { 
             if((data[i][intColCount-1]).equals("Y"))
             { 
                 arrRowCount++; 

                 } 
             } 
                j=0;

                Object[][] retData = new Object[arrRowCount][intColCount]; 
                for (int i = 0; i < data.length; i++) 
                { 
                    if ((data[i][intColCount-1]).equals("Y")) {
                        retData[j] = data[i]; j++; }
                } 
                return retData; 
     }

上面的代码仅将 excel 中 flag='Y' 的记录发送到 Dataprovider。但是,只有当测试脚本有一个具有所有自动化步骤的 @Test 方法时,它才有效,而现在我有多个 @Test 方法来模拟相同的步骤,这些步骤我传递了同一个 Dataprovider(Order)。

让我知道是否有人使用类似的代码实现了这一点,或者 TestNG 是否具有将过滤后的 excel 行发送到 Dataprovider 的特定功能

4

1 回答 1

0

我现在已经解决了这个问题。上面给出的 Excel 中具有 flag = 'Y' 的行的代码不能与多个 @Test 方法一起使用的原因只是由于一个愚蠢的错误。错误是我稍微改变了excel结构,并没有根据新标志列的索引修改上面的代码。

于 2016-01-12T15:11:01.790 回答