在 Robot Framework 中跟踪日志文件

tail a log file in Robot Framework

我想打开一个文件并 tail -f 输出。我希望能够在子进程中的测试开始时打开文件,执行测试,然后从尾部开始处理输出。

我试过使用 Run Process,但那只是旋转,因为进程永远不会终止。我尝试使用 Start Process 后跟 Get Process Result,但我收到一条错误消息 Getting results of unfinished processes is not supported.

这可能吗?

不需要tail -f。在测试开始时,您可以获得文件中的字节数。让测试运行,然后从你之前计算的字节偏移量开始读取文件(或者读取整个文件,并使用切片查看新数据)

tail -F 命令在终止之前不会完成,因此您无法获得结果。 您有两种方法可以满足您的需求。

首先,在获取标准输出之前终止 tail 进程:

${result} =     start Process    tail     -F     tailtest    alias=tail
#test case stuff starts here
#...
#test case stuff ends here
terminate process    tail
${result}    Get Process Result    tail    stdout=True
log    ${result}

您可以执行 "start process" 并终止它并在测试 setup/teardown 中获得结果。

另一个选项是将输出重定向到一个文件,并获取此文件内容:

${result} =     start Process    tail     -F     tailtest   stdout=tailoutput    alias=tail
#test case stuff starts here
#...
#test case stuff ends here
${result}    get file    tailoutput
log    ${result}

如果您无论如何终止 tail 进程,这将是更清洁的解决方案。

当尾部输出较大时,第二种方法更好 - 避免出现以下问题:"the output buffers may get full and the program can hang"。