Robot Framework中执行Python脚本未等待完成的问题求助
解决Robot Framework中Python测试数据脚本未正常执行的问题
问题诊断
当前Run Process调用返回rc=0但未生成测试数据,且执行时长远短于手动运行时间,核心原因大概率是脚本未完整执行:
shell=yes可能导致命令行参数传递异常,脚本未接收到ABC和TEST参数- 未正确捕获脚本输出,无法确认实际执行状态
解决方案一:修正Run Process调用
调整参数传递逻辑,移除不必要的shell=yes,直接捕获输出并验证执行结果:
${RESULT}= Run Process python c:/path/testdatascript.py ABC TEST stdout=PIPE stderr=PIPE # 输出脚本执行日志便于排查 Log ${RESULT.stdout} # 断言脚本输出成功标识 Run Keyword And Continue On Failure Should Contain ${RESULT.stdout} successfully created the testdata # 验证返回码正常 Should Be Equal As Integers ${RESULT.rc} 0
说明:
- 用
stdout=PIPE直接捕获输出,无需写入文件 - 分开发送
ABC和TEST参数,避免shell解析导致的参数丢失 - 通过断言确认成功输出后,再执行后续测试步骤
解决方案二:使用Start Process异步监控输出
若需实时监控脚本执行状态,可通过Start Process异步启动脚本,循环检查输出直到出现成功标识:
# 异步启动脚本,不阻塞后续步骤 ${PROCESS}= Start Process python c:/path/testdatascript.py ABC TEST stdout=PIPE stderr=PIPE # 设置1分钟超时(匹配手动执行最长时长),定期检查输出 Wait Until Keyword Succeeds 60s 5s Verify Process Success ${PROCESS} # 释放进程资源 Terminate Process ${PROCESS} *** Keywords *** Verify Process Success [Arguments] ${process_handle} ${CURRENT_OUTPUT}= Read Process Output ${process_handle} Log ${CURRENT_OUTPUT} Should Contain ${CURRENT_OUTPUT} successfully created the testdata
说明:
Wait Until Keyword Succeeds会每隔5秒执行一次Verify Process Success,直到找到成功标识或超时- 该方式适合需要实时追踪脚本执行进度的场景
额外排查项
- 确认Robot Framework使用的Python环境与手动执行的PowerShell环境一致(可通过
Run Process python --version对比版本) - 检查脚本生成文件的路径是否为绝对路径,避免因Robot工作目录不同导致文件生成在非预期位置
- 若需模拟手动输入参数的场景,可通过
stdin=PIPE传递输入:
${RESULT}= Run Process python c:/path/testdatascript.py stdin=PIPE stdout=PIPE stderr=PIPE Write To Process ${RESULT} ABC\nTEST\n ${OUTPUT}= Read Process Output ${RESULT} Should Contain ${OUTPUT} successfully created the testdata
内容的提问来源于stack exchange,提问作者Mauro 101
相关产品推荐
相关产品推荐

