【问题标题】:Parameterizing both data and object names using testNG and Data Providers使用 testNG 和 Data Providers 参数化数据和对象名称
【发布时间】:2015-06-23 04:44:24
【问题描述】:

我正在尝试创建一个混合框架,我将从 Excel 表中传递对象名称和相应的值。这是我想做的事

FieldName   Type   Value1   Value2  Value3  
FName       Edit   John     Smith   Carla    
LName       Edit   Fellow   Carson  Black    
Submit      Link   Click    Click   Click    
  • 字段名称:包含用于标识对象的 Xpath 或 ID
  • Type:包含类型,如文本框或列表框等,以便我可以使用 IF 循环相应地处理每个 TYPE 对象。
  • 值 1..3..:我想要运行测试(对象)的不同值。

我该如何使用数据提供程序来执行此操作,因为理想情况下,当我使用不同的数据值时,前 2 列需要保持不变。此外,数据提供者似乎正在逐行读取数组。抱歉,如果这是一个基本问题,我是 testNG 的新手,听说过一些很棒的东西,想去看看。

【问题讨论】:

    标签: testng testng-dataprovider


    【解决方案1】:

    数据提供者返回适合您的任何数据,因此您只需考虑如何将此电子表格转换为您的测试方法可以接受的对象。例如,如果您希望您的测试每列采用一个参数:

    @Test(dataProvider = "dp")
    public void f(String fieldName, String type, String value1, String value2, String value3) {
      // test
    }
    
    @DataProvider
    public Object[][] dp() {
      // read the spreadsheet
      return new Object[][] {
        new Object[] { fieldName, type, value1, value2, value3 },  // row 1
        new Object[] { fieldName, type, value1, value2, value3 },  // row 2
      }
    }
    

    【讨论】:

    • 感谢您的回复。我希望它工作的方式是这样的`@Test(dataProvider = "dp") public void f(String fieldName,String Type,String Value1)`基于上面提到的数组,Fname会发生什么被标识为文本框,然后将输入 John。 .数据值1点击完成后。数据值2即FName - Smith,LName - Carson和Submit - Click被执行,而字段名称仍然是Fname,LName和Submit。希望我很清楚:( .
    • 您可能很清楚,但是在 cmets 中阅读代码有点困难 :-) 您可以通过电子邮件将您的问题发送给 testng-users 列表吗?我们可以在那里继续讨论。