2016-04-01 90 views
1

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

我试过使用Run Process,但这只是旋转,因为过程永远不会终止。我尝试使用Start Process其次Get Process Result,但我得到一个错误,说Getting results of unfinished processes is not supported.

这可能吗?

回答

2

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

+0

这回答了我问的问题,所以谢谢。但是我应该使用'tail -F',而不是'tail -f'。用例是一个旋转的日志文件,它在一定大小后滚动。如果“尾巴”在帽子附近开始,当文件翻转时,新文件将变得非常麻烦,并且读取将不会提供所有必要的输出。 – ewok

0

尾部-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} 

这将是清洁的解决方案,如果你反正终止尾巴过程。

当尾部输出较大时,第二种方法更好 - 避免出现“输出缓冲区可能已满并且程序可能挂起”的问题。