移动端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}
三、解决你遇到的“能读取数据但无法执行移动端测试”的问题
你现在的情况大概率是以下几个原因:
- 关键字名称不匹配:CSV里写的关键字和Robot中定义的(或AppiumLibrary提供的)名称不一致,比如CSV写“输入用户名”,但Robot里的关键字是
Input Text,导致无法识别。 - 空参数处理不当:传递了空字符串给关键字,而关键字需要必填参数,导致执行报错。上面的方案里都处理了空参数的情况,你可以参考。
- 移动端环境未初始化:执行测试前没有启动Appium服务、没有连接设备,或者没有在Robot里配置Appium的Desired Capabilities(比如设备ID、App包名)。
- 步骤顺序混乱:没有按
Step No排序步骤,导致用例执行顺序错误。
四、注意事项
- 确保你的Robot项目中已经定义好所有CSV里用到的关键字,或者确认是AppiumLibrary自带的关键字。
- 移动端的Desired Capabilities可以在
Launch Application关键字里配置,或者在AppiumLibrary的Open Application关键字里设置(比如指定设备UDID、平台版本等)。 - 可以在测试套件里添加
Setup和Teardown来做全局的环境准备和清理,比如启动/关闭Appium服务。
内容的提问来源于stack exchange,提问作者Pooja
相关产品推荐
相关产品推荐

