我想打开一个文件并输出tail -f
。我希望能够在测试开始时在子进程中打开文件,执行测试,然后从尾部开始处理输出。在Robot Framework中尾日志文件
我试过使用Run Process
,但这只是旋转,因为过程永远不会终止。我尝试使用Start Process
其次Get Process Result
,但我得到一个错误,说Getting results of unfinished processes is not supported.
这可能吗?
我想打开一个文件并输出tail -f
。我希望能够在测试开始时在子进程中打开文件,执行测试,然后从尾部开始处理输出。在Robot Framework中尾日志文件
我试过使用Run Process
,但这只是旋转,因为过程永远不会终止。我尝试使用Start Process
其次Get Process Result
,但我得到一个错误,说Getting results of unfinished processes is not supported.
这可能吗?
有没有必要做tail -f
。在测试开始时,您可以获取文件中的字节数。让测试运行,然后从前面计算的字节偏移量开始读取文件(或者读取整个文件,并使用分片查看新数据)
尾部-F命令将无法完成直到它终止,所以你不能得到结果。 你有2种方式来完成你的需求。
首先,得到它的stdout之前终止尾过程:
${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}
你可以做“启动程序”,并终止其&获得测试安装/拆卸的结果。
另一种选择是将输出重定向到一个文件中,并获得该文件的内容:
${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 -F',而不是'tail -f'。用例是一个旋转的日志文件,它在一定大小后滚动。如果“尾巴”在帽子附近开始,当文件翻转时,新文件将变得非常麻烦,并且读取将不会提供所有必要的输出。 – ewok