You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

移动端Robot Framework自动化:CSV/Excel测试用例编写与执行咨询

我之前刚好做过类似的需求——用CSV/Excel来管理Robot Framework的移动端自动化用例,跟你想要的Test Complete风格一致,下面给你详细说下怎么实现:

一、CSV/Excel测试用例的标准格式

首先得让你的表格结构能被Robot识别并映射到关键字执行,推荐用**“测试用例+步骤”**的二维结构,每一行对应一个测试步骤,用测试用例ID来分组,方便批量执行。

CSV格式示例

Test Case ID,Test Case Name,Step No,Keyword,Arg1,Arg2,Arg3
TC001,Successful Login,1,Launch Application,com.example.myapp,,
TC001,Successful Login,2,Input Text,id=username_field,test_user,,
TC001,Successful Login,3,Input Text,id=password_field,test_pass,,
TC001,Successful Login,4,Click Element,id=login_button,,
TC001,Successful Login,5,Verify Element Present,id=home_screen_title,,
TC002,Failed Login Attempt,1,Launch Application,com.example.myapp,,
TC002,Failed Login Attempt,2,Input Text,id=username_field,wrong_user,,
TC002,Failed Login Attempt,3,Input Text,id=password_field,wrong_pass,,
TC002,Failed Login Attempt,4,Click Element,id=login_button,,
TC002,Failed Login Attempt,5,Verify Element Present,id=error_message,,

字段说明

  • Test Case ID:唯一标识一个测试用例,用来分组步骤
  • Test Case Name:用例的描述性名称,方便日志查看
  • Step No:步骤的执行顺序,确保用例步骤按正确顺序运行
  • Keyword:你在Robot中已经定义好的关键字(或者AppiumLibrary自带的关键字,比如Input Text),必须和Robot里的关键字名称完全一致
  • Arg1/Arg2/Arg3:关键字对应的参数,没有参数就留空,后续执行时会自动跳过空参数

Excel格式

和CSV的结构完全一样,直接把上面的内容复制到Excel的Sheet1里,保存为.xlsx格式即可,后续读取方式和CSV类似。

二、读取文件并执行测试的具体方法

我推荐两种方案,一种是用Robot官方的DataDriver库(快速上手),另一种是用PandasLibrary(更灵活,适合复杂场景),你可以根据自己的需求选。

方案1:用DataDriver库(快速实现)

DataDriver是Robot Framework专门用来做数据驱动测试的库,支持直接读取CSV/Excel,自动绑定测试用例。

步骤1:安装依赖库

打开终端执行:

pip install robotframework-datadriver robotframework-appiumlibrary openpyxl
  • openpyxl是读取Excel文件的依赖,只用CSV的话可以不用装。

步骤2:编写Robot测试套件文件

*** Settings ***
Library    AppiumLibrary
# 读取CSV的配置
Library    DataDriver    file=mobile_test_cases.csv    dialect=excel
# 如果是Excel,改成:Library    DataDriver    file=mobile_test_cases.xlsx    sheet=Sheet1

*** Keywords ***
# 定义通用的步骤执行关键字,处理参数空值
Execute Mobile Step
    [Arguments]    ${keyword}    ${arg1}=${None}    ${arg2}=${None}    ${arg3}=${None}
    # 收集非空参数
    ${valid_args}=    Create List
    Run Keyword If    ${arg1} != ${None}    Append To List    ${valid_args}    ${arg1}
    Run Keyword If    ${arg2} != ${None}    Append To List    ${valid_args}    ${arg2}
    Run Keyword If    ${arg3} != ${None}    Append To List    ${valid_args}    ${arg3}
    # 动态执行关键字
    Run Keyword    ${keyword}    @{valid_args}

*** Test Cases ***
# 用Template绑定DataDriver的数据,自动遍历所有步骤
Run All Mobile Test Cases
    [Template]    Execute Mobile Step
    # DataDriver会自动读取CSV/Excel中的Keyword、Arg1、Arg2、Arg3列
    # 并且会按Test Case ID分组,按Step No排序执行

方案2:用PandasLibrary(灵活控制流程)

如果你需要更精细的控制(比如每个用例单独启动/关闭App、自定义日志、异常处理),推荐用PandasLibrary来读取和处理表格数据。

步骤1:安装依赖库

pip install robotframework-pandaslibrary robotframework-appiumlibrary pandas openpyxl

步骤2:编写Robot测试套件文件

*** Settings ***
Library    AppiumLibrary
Library    PandasLibrary
Library    Collections

*** Keywords ***
# 执行单个测试用例的所有步骤
Execute Single Test Case
    [Arguments]    ${tc_data}
    # 获取用例名称
    ${tc_name}=    Get Value From Dictionary    ${tc_data.iloc[0]}    Test Case Name
    Log    === Starting Test Case: ${tc_name} ===
    # 启动App(这里可以根据用例数据里的包名动态调整)
    Launch Application    ${tc_data.iloc[0]['Arg1']}
    # 按Step No排序步骤
    ${sorted_steps}=    Sort DataFrame By Column    ${tc_data}    Step No
    # 遍历每个步骤执行
    :FOR    ${index}    ${row}    IN ENUMERATE    ${sorted_steps.itertuples()}
    \    Log    Executing Step ${row.Step No}: ${row.Keyword}
    \    ${keyword}=    Set Variable    ${row.Keyword}
    \    ${valid_args}=    Create List
    \    Run Keyword If    ${row.Arg1} != ''    Append To List    ${valid_args}    ${row.Arg1}
    \    Run Keyword If    ${row.Arg2} != ''    Append To List    ${valid_args}    ${row.Arg2}
    \    Run Keyword If    ${row.Arg3} != ''    Append To List    ${valid_args}    ${row.Arg3}
    \    Run Keyword    ${keyword}    @{valid_args}
    # 关闭App,清理环境
    Close Application
    Log    === Test Case ${tc_name} Completed ===

*** Test Cases ***
Run Test Cases From CSV/Excel
    # 读取CSV文件(Excel的话用Read Excel Sheet)
    ${df}=    Read CSV    path=mobile_test_cases.csv
    # 按Test Case ID分组
    ${tc_groups}=    Group DataFrame By Column    ${df}    Test Case ID
    # 遍历每个测试用例组执行
    :FOR    ${tc_id}    IN    @{tc_groups.keys()}
    \    ${tc_data}=    Get Value From Dictionary    ${tc_groups}    ${tc_id}
    \    Execute Single Test Case    ${tc_data}
三、解决你遇到的“能读取数据但无法执行移动端测试”的问题

你现在的情况大概率是以下几个原因:

  1. 关键字名称不匹配:CSV里写的关键字和Robot中定义的(或AppiumLibrary提供的)名称不一致,比如CSV写“输入用户名”,但Robot里的关键字是Input Text,导致无法识别。
  2. 空参数处理不当:传递了空字符串给关键字,而关键字需要必填参数,导致执行报错。上面的方案里都处理了空参数的情况,你可以参考。
  3. 移动端环境未初始化:执行测试前没有启动Appium服务、没有连接设备,或者没有在Robot里配置Appium的Desired Capabilities(比如设备ID、App包名)。
  4. 步骤顺序混乱:没有按Step No排序步骤,导致用例执行顺序错误。
四、注意事项
  • 确保你的Robot项目中已经定义好所有CSV里用到的关键字,或者确认是AppiumLibrary自带的关键字。
  • 移动端的Desired Capabilities可以在Launch Application关键字里配置,或者在AppiumLibrary的Open Application关键字里设置(比如指定设备UDID、平台版本等)。
  • 可以在测试套件里添加Setup和Teardown来做全局的环境准备和清理,比如启动/关闭Appium服务。

内容的提问来源于stack exchange,提问作者Pooja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:20:47