如何在测试执行后记录Robot框架日志文件中的命令输出?

rcu*_*her 4 robotframework

在Robot Framework log.html中,我想记录我正在从python文件执行的命令输出.如附带的log.html截图所示,现在我无法看到命令输出.简单的打印或记录为PASS.

我的机器人文件:

*** Settings ***
Library         test


*** Test cases ***
check
    test
Run Code Online (Sandbox Code Playgroud)

Python关键字:

def test():
    cmd = ' net test" '
    output = os.popen(cmd).read()
    match1 = re.findall('.* (successfully).*',output)
    mat1 = ['successfully']
    if match1 == mat1:
        print "PASS::"
Run Code Online (Sandbox Code Playgroud)

有人可以指导我吗?

在此输入图像描述

Bry*_*ley 7

如果希望命令的输出显示在日志中,则有三种方法:使用print语句,使用日志记录API或使用内置的log关键字.这些方法都记录在机器人框架用户指南中.

在这三者中,日志API可以说是最好的选择.

使用print语句

你已经在使用这种方法了.用户指南中记录了一个名为Logging information的部分:

...方法也可以通过写入标准输出流(stdout)或标准错误流(stderr)将消息发送到日志文件......

例:

def test():
    cmd = ' net test" '
    output = os.popen(cmd).read()
    match1 = re.findall('.* (successfully).*',output)
    mat1 = ['successfully']
    if match1 == mat1:
        print "output: " + output
Run Code Online (Sandbox Code Playgroud)

使用日志记录API

有一个用于记录的公共API,也在用户指南中的一个名为Public API的部分中记录,用于记录:

Robot Framework有一个基于Python的日志记录API,用于将消息写入日志文件和控制台.测试库可以像logger.info('我的消息')一样使用这个API,而不是像打印' INFO我的消息' 那样记录标准输出.除了使用更清晰的编程接口之外,此API还有一个好处,即日志消息具有准确的时间戳.

例:

from robot.api import logger
def test():
    ...
    logger.info("output: " + output)
Run Code Online (Sandbox Code Playgroud)

使用内置的Log关键字

最后,您还可以使用内置的log关键字.使用内置关键字在用户指南的" 使用BuiltIn Library "一节中介绍.

使用Python实现的测试库可以使用Robot Framework的内部模块,例如,获取有关已执行测试和所使用设置的信息.但是,应该谨慎使用这种与框架通信的强大机制,因为所有Robot Framework的API都不是外部使用的,它们可能会在不同的框架版本之间发生根本变化.

例:

from robot.libraries import BuiltIn
...
def test():
    ...
    BuiltIn().log("this is a debug message", "DEBUG")
Run Code Online (Sandbox Code Playgroud)