Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Testing 发生错误时附加进程stderr_Testing_Logging_Robotframework_Stderr - Fatal编程技术网

Testing 发生错误时附加进程stderr

Testing 发生错误时附加进程stderr,testing,logging,robotframework,stderr,Testing,Logging,Robotframework,Stderr,我正在一个可执行文件上运行一系列集成测试。程序通过其返回代码发出错误条件的信号,并可能将一些(不同但仍然有用的)输出打印到stderr 我目前使用的流程库如下: ${result} = Run Process ${prog} ${src} Should Be Equal As Integers ${result.rc} 0 这在后续测试中效果很好,但在出现错误的情况下,它不会产生任何有意义的信息。在测试

我正在一个可执行文件上运行一系列集成测试。程序通过其返回代码发出错误条件的信号,并可能将一些(不同但仍然有用的)输出打印到stderr

我目前使用的流程库如下:

         ${result} =         Run Process        ${prog}        ${src}
         Should Be Equal As Integers    ${result.rc}    0
这在后续测试中效果很好,但在出现错误的情况下,它不会产生任何有意义的信息。在测试失败的情况下,是否有方法将stderr流附加到日志文件?我不愿意为每个测试用例添加一个插件,以避免日志文件混乱,但如果这是唯一的选择,我也希望您能给我一个提示,告诉我如何以传统的方式完成此操作。

从位于的文档中,您可以将
stderr
重定向到一个文件:

标准输出和错误流

默认情况下,运行进程,以便将其标准输出和标准错误流保存在内存中。这在正常情况下工作正常,但如果有大量输出,输出缓冲区可能会满,程序可能会挂起。 此外,在Jython上,如果进程终止,写入这些内存缓冲区的所有内容都可能丢失。 为了避免上述问题,可以使用stdout和stderr参数来指定文件系统上的文件,在其中重定向输出。如果其他进程或其他关键字需要以某种方式读取或操作输出,这也很有用。 给定的stdout和stderr路径相对于当前工作目录。在Windows上,给定路径中的正斜杠将自动转换为反斜杠。 作为一项特殊功能,可以使用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}
请注意,测试运行后不会自动删除创建的输出文件。如果需要,用户有责任将其删除