在错误的情况下附加过程stderr



我在一个可执行文件上运行了一堆集成测试。该程序通过其返回代码向错误条件发出信号,并且可能会将某些(不同但仍然有用的(输出打印到STDERR。

我目前正在使用流程库,如下所示:

         ${result} =         Run Process        ${prog}        ${src}
         Should Be Equal As Integers    ${result.rc}    0

在成功测试的情况下,这很好,但是在错误的情况下,它不会产生任何有意义的信息。在测试失败的情况下,有没有办法将STDERR流连接到日志文件?我不愿意为每个测试用例添加以不混杂着日志文件,但是如果这是唯一的选择,我也很感激如何以正统的方式做到这一点。

从流程文档的文档中,您可以将stderr重定向到文件:

标准输出和错误流

默认情况下,运行了其标准输出和标准误差流。这正常工作正常,但是如果输出很多,则输出缓冲区可能会满足,并且程序可能会挂起。此外,在Jython上,如果该过程被终止,则写给这些内存缓冲区的所有内容都可能会丢失。为了避免上述问题,可以使用stdout和stderr参数来指定文件系统上的文件,以重定向输出。如果其他过程或其他关键字需要以某种方式读取或操纵输出,这也很有用。给定的stdout和stderr路径相对于当前的工作目录。给定路径中的正向斜线会自动转换为窗口上的后斜线。作为一项特殊功能,可以使用stderr = stdout将标准误差重定向到标准输出。无论输出是否重定向到文件,都可以通过在过程结束时返回的结果对象访问它们。命令有望使用控制台编码编写输出,但是如果需要,可以使用output_encoding参数配置输出编码。

示例:

${result} = Run Process program stdout=${TEMPDIR}/stdout.txt    stderr=${TEMPDIR}/stderr.txt
Log Many    stdout: ${result.stdout}    stderr: ${result.stderr}        
${result} = Run Process program stderr=STDOUT
Log all output: ${result.stdout}

请注意,在测试运行后,创建的输出文件不会自动删除。用户有责任在需要时删除它们。

相关内容

  • 没有找到相关文章

最新更新