在Robot Framework

时间:2016-04-01 17:23:00

标签: python testing robotframework

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

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

这可能吗?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

首先,在获得它之前终止尾程: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}

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

当尾部输出很大时,第二种方法更好 - 在以下情况下避免出现问题:"输出缓冲区可能已满,程序可能会挂起"。