Pybot - 将测试库打印语句重定向到控制台

时间:2015-05-11 02:54:24

标签: python logging robotframework

Test.robot,

*** Settings ***
Library roppie

*** Test Cases ***
Log Test
  Robot Print

roppie.py,

def robot_print():
   print "this is a testlib log for robot test - Test.robot"

现在,当我运行pybot Test.robot时,打印语句将打印在log.html中。但我有兴趣在控制台stdout流中看到这些打印语句。

由于log.html有很多文本标记,我更喜欢在控制台上将日志消息看作纯文本。如何配置?

2 个答案:

答案 0 :(得分:3)

机器人重新定义sys.stdout。机器人框架用户指南中标有Logging Information的部分提到了这一点(参见字幕“登录到控制台”。

  

另一个选项,只适用于Python,是写作   发送到sys .__ stdout__或sys .__ stderr__的消息。使用时   方法,消息立即写入控制台,而不是   写在所有

的日志文件中

例如:

import sys
def robot_print():
   sys.__stdout__.write("this is a testlib log for robot test - Test.robot")

或者,如果你不是“喜欢这个java打印语句的粉丝......”(基于你对原始问题的评论),你可以暂时重新分配sys.stdout

def robot_print():
    pybot_stdout = sys.stdout
    sys.stdout = sys.__stdout__
    print "this is a testlib log for robot test - Test.robot"
    sys.stdout = pybot_stdout

答案 1 :(得分:0)

  

但是我有兴趣在控制台stdout流中看到这些打印语句。

为此,我使用了Builtin库中的Log to console。 例如:

from robot.libraries.BuiltIn import BuiltIn
bi=BuiltIn()
def robot_print():
    bi.log_to_console("this is a testlib log for robot test - Test.robot")