当前位置: 首页 > 知识库问答 >
问题:

如何将excel的特定行发送到testNG中的数据提供程序?

令狐高洁
2023-03-14

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

我希望数据提供程序仅返回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中具有='Y'标志的记录/s发送到数据提供程序。但是,只有当测试脚本有一个具有所有自动化步骤的@Test方法时,它才有效,而现在我有多个@Test方法来模拟我传递给同一个数据提供者(订单)的相同步骤。

让我知道是否有人使用类似的代码实现了这一点,或者TestNG是否有特定的功能将筛选的excel行发送到数据提供程序

共有1个答案

傅旺
2023-03-14

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

 类似资料:
  • 我的问题是: “数据提供者”如何在内部将数据发送到测试? 幕后到底发生了什么,以便我们在“测试”中获得发送的数据?。 我很想知道,数据提供者和测试是如何通过提及“数据提供者”的名称而相互连接的,“数据提供者”将数据发送给测试的。 “数据提供者”是否调用测试并将数据作为参数传递? 我的数据提供者代码: 我的测试代码:

  • 我已使用以下方法在应用程序中输入凭据。 其中EnterText定义如下: 在测试类中,我写了下面的代码 我得到以下错误: 失败:loginProxy(“11”,“Priya”)java.lang.NumberFormatException:java.lang.Integer处为空。parseInt(未知源)位于java.lang.Integer。parseInt(未知源) 请帮助解决同样的问题。据

  • 我想在类中与数据提供者并行运行测试方法。我需要一个数据提供者,它每次在新测试方法开始为给定的测试运行生成部分动态数据之前都会被调用。让我用伪代码解释一下: 我怎样才能做到这一点?

  • 我是Spock的新手,目前正在使用它,但我继承了大量需要重复使用的测试配置文件。每个配置文件都是一个JSON,与Spec类同名。对于每种试验方法,都有一个带有参数的地图列表,例如: TestNG允许我在数据提供者方法中传递测试方法名称,因此我可以根据测试类名和测试方法名称返回映射列表。我的基类中只有一个数据提供者方法: 作为这种方法的结果,我得到了一组映射,用于每个测试迭代。然后我将这个方法指定为

  • 我正在尝试通过TestNG进行多线程测试为测试实例化WebDrivers<代码>@AfterMethod在测试后关闭WebDrivers

  • 有人知道TestNG如何根据为测试方法指定的数据提供者名称计算出数据提供者方法是什么吗? 我找到了这个解决方案:https://gist.github.com/ae6rt/3805639 但是,它没有考虑到数据提供者可能是: 在完全不同的类别中定义,或 在父类中定义,并且 该方法可以是静态的,也可以是非静态的 我试图自己破解一些东西,但后来我想我不可能是第一个试图解决这个问题的人,特别是因为显然T