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

如何在Robot Framework中正确运行Python脚本?输出为空断言失败

解决Robot Framework运行Python脚本stdout为空的问题

问题分析

你遇到的'' does not contain 'hello'错误,说明Run Process执行Python脚本后未捕获到标准输出(stdout),大概率是脚本执行出错、路径错误或输出被缓冲导致。

排查与解决步骤

先修改测试用例,添加stderr和返回码打印,定位具体问题:

*** Settings ***
Library    OperatingSystem
Library    Process

*** Test Cases ***
Simple python example
    ${result} =     Run Process     python3   hello.py  -c   arg1  -b  arg2
    Log    stdout: ${result.stdout}
    Log    stderr: ${result.stderr}
    Log    return code: ${result.returncode}
    Should Contain    ${result.stdout}    hello 

运行后根据日志信息对应解决:

1. 返回码不为0,stderr提示找不到文件

如果stderr显示类似FileNotFoundError: No such file or directory: 'hello.py',说明脚本路径错误:

  • 改用hello.py的绝对路径,比如:
    ${result} =     Run Process     python3   /home/yourname/test/hello.py  -c   arg1  -b  arg2
    
  • 或者先设置工作目录到脚本所在位置:
    Set Working Directory    /home/yourname/test
    ${result} =     Run Process     python3   hello.py  -c   arg1  -b  arg2
    

2. 返回码为0,但stdout为空

这种情况通常是Python输出缓冲导致,二选一解决:

  • 在Python脚本末尾添加强制刷新输出:
    import sys
    print("This is the name of the script:", sys.argv[0])
    print("Number of arguments:", len(sys.argv))
    print("The arguments are:", str(sys.argv))
    print("hello world")
    sys.stdout.flush()  # 强制刷新输出缓冲区
    
  • 或者执行Python时添加-u参数禁用缓冲:
    ${result} =     Run Process     python3  -u  hello.py  -c   arg1  -b  arg2
    

3. Windows环境下提示找不到python3

Windows系统中Python命令通常是python而非python3,修改命令即可:

${result} =     Run Process     python   hello.py  -c   arg1  -b  arg2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:55:21