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

Robotframework 如何在数据驱动测试中从excel中读取选定字段?,robotframework,data-driven,Robotframework,Data Driven,在我的web应用程序中,我必须更新25个字段才能创建一个用户。Excel中的测试数据有一个100个用户的列表,其中包含所有25个字段的必需信息 使用Robot框架,测试脚本的编写方式是从excel中读取一行(单用户信息),并更新web应用程序中的所有对应字段 如果我只想更新10个字段(或“n”个字段),如何在脚本中处理它 注意:要更新的字段可能会根据测试用例发生变化。根据我对您的情况的了解,这对Robot来说不是一项容易的任务。然而,有一种非常简单的方法来处理这个问题,即使用通用测试脚本和特定于

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

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

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


注意:要更新的字段可能会根据测试用例发生变化。

根据我对您的情况的了解,这对Robot来说不是一项容易的任务。然而,有一种非常简单的方法来处理这个问题,即使用通用测试脚本和特定于案例的excel文件

  • 使用
    FieldName
    TabName
    填充excel电子表格,以便能够在页面上找到输入。我的做法是:
  • 使用ExcelLibrary将TabName、FieldName和Value检索到列表中(您似乎比我更熟悉它的使用,所以我将它留给您)。此步骤的结果是,您将有一个包含3个项目的列表,例如
    ${SingleFieldOfSingleUser}.['Tab1','Field1','aaa']

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

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

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

    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]}
    
  • 利润!现在,根据要更新的字段,您可以提供包含任意列数的Excel电子表格

  • 这里我为您留下一个完整代码清单的模型:

    *** 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]}
    

    附言。你真的不需要太多的FOR循环和列表来完成这项工作,但我试图使我的解决方案尽可能接近你的原始编码模式,以防它有一些隐藏的个人价值。

    你能展示一下你当前的测试脚本吗?你的意思是说,它有25个字段,只有10个字段是必需的,而create user和你想实现这两种情况吗?@Rao,是的,我想实现这两种情况。我已经添加了供您参考的测试脚本。请看一下我的答案,并向我提供一些反馈,以便我们能够为您和将来可能遇到此问题的任何人解决此问题