如何从数据驱动测试中读取excel中的选定字段?

时间:2016-03-04 13:47:08

标签: robotframework data-driven

在我的网络应用程序中,我必须更新25个字段才能创建用户。 Excel中的测试数据包含100个用户的列表,其中包含所有25个字段的必填信息。

使用Robot框架,编写测试脚本的方式是从excel读取单行(单用户信息)并更新Web应用程序中的所有相应字段。

如果我只想更新10个字段(或“n”字段),我该如何在脚本中处理它? enter image description here

注意:要更新的字段可能会根据测试用例进行更改。

1 个答案:

答案 0 :(得分:1)

根据我对你的情况的了解,对于机器人来说这不是一件容易的事。但是,有一种相当简单的方法可以通过使用通用测试脚本和特定于案例的excel文件来处理此问题。

  1. 使用FieldNameTabName填充您的Excel电子表格,以便能够在页面上找到输入。我这样做的方式是:
  2. table 1

    1. 使用ExcelLibrary将TabName,FieldName和Value检索到一个列表(使用它时你似乎比我更熟悉,所以我把它留给你)。作为此步骤的结果,您将获得3个项目的列表,例如${SingleFieldOfSingleUser} # ['Tab1', 'Field1', 'aaa']

    2. 现在创建这些字段的列表:

          \  Insert Into List  ${SingleUser}  ${ColIndex}  ${SingleFieldOfSingleUser}
      
    3. 不是手动浏览每个可能的输入字段,而是使用通用的自定义关键字:

          :FOR  ${UserAttribute}  IN  @{SingleUser}
          \  Input Attribute Into User Form  ${UserAttribute}
      
    4. 关键字可能如下所示:

      Input Attribute Into User Form
          [Arguments]  ${Attribute}
          # Try switching to the correct Tab. If already there, don't break upon error
          Run Keyword And Ignore Error  Click Element  ${Attribute[0]}
          # Input Value
          Input Text  ${Attribute[1]}  ${Attribute[2]}
      
    5. 利润!您现在可以提供包含任意数量列的Excel电子表格,具体取决于您要更新的字段。

    6. 在这里,我为您留下完整代码列表的模型:

      *** Keywords ***
      
      (...)
      
      Read Column Data For User
          ${SingleUser}  Create List
      
          :FOR  ${ColIndex}  IN RANGE  ${COLCOUNT}
          ( ... Excel-related code here ... )
          \  ${SingleFieldOfSingleUser}  Create List  ${TabName}  ${FieldName}  ${Value}
          \  Insert Into List  ${SingleUser}  ${ColIndex}  ${SingleFieldOfSingleUser}
      
          :FOR  ${UserAttribute}  IN  @{SingleUser}
          \  Input Attribute Into User Form  ${UserAttribute}
      
          (...)
      
      Input Attribute Into User Form
              [Arguments]  ${Attribute}
              Run Keyword And Ignore Error  Click Element  ${Attribute[0]}
              Input Text  ${Attribute[1]}  ${Attribute[2]}
      

      P上。秒。你真的不需要那么多FOR循环和列表来使这个东西工作,但我试图使我的解决方案尽可能接近你原来的编码模式,以防它有一些隐藏的个人价值。