如何在Robot Framework中并行执行CSV数据驱动测试?
解决Robot Framework CSV数据驱动测试用例并行运行问题
问题根源
你当前的测试结构是单个测试用例+固定模板,CSV中的多条数据是该测试用例的内部迭代逻辑,而非独立测试用例。pabot的-testlevelsplit是按测试用例条目拆分并行,因此只会把整个测试用例作为一个单元运行,无法拆分内部的CSV数据迭代。
解决方案步骤
1. 安装DataDriver库
使用robotframework-datadriver库自动将CSV每条记录转为独立测试用例,这是实现数据驱动并行的关键:
pip install robotframework-datadriver
2. 调整测试文件结构
修改你的测试文件(比如命名为data_driven_tests.robot),让CSV数据直接映射为独立测试用例:
*** Settings *** # 加载CSV文件,dialect根据你的CSV格式调整(比如excel/tab) Library DataDriver file=你的测试数据.csv dialect=excel # 绑定测试模板到Keyword Test Template My test template *** Test Cases *** # 无需手动编写测试用例,DataDriver会自动从CSV生成每条记录对应的测试用例 # 测试用例名称默认会包含参数信息,方便区分不同迭代 *** Keywords *** My test template [Arguments] ${field1} ${field2} # 这里写你的测试逻辑代码 Log 执行测试:field1=${field1}, field2=${field2} # 其他测试步骤(比如断言、操作等)
3. 用pabot并行运行
使用--testlevelsplit参数让pabot拆分DataDriver生成的每个动态测试用例,结合--processes指定并行进程数:
pabot --testlevelsplit --processes 10 ./data_driven_tests.robot
额外说明
- 如果不想用DataDriver,也可以手动读取CSV并通过
Create Test Case关键字动态生成测试用例,但DataDriver更简洁高效。 - 确保CSV文件的列数和Keyword的参数数量完全匹配,若CSV有表头,表头名称需和参数名对应(或通过
columns参数指定映射)。
内容的提问来源于stack exchange,提问作者Pradeep Kumar Mahendran
相关产品推荐
相关产品推荐

