【问题标题】:How can I control log level of plain-text debug files in robot framework?如何控制机器人框架中纯文本调试文件的日志级别?
【发布时间】:2017-09-23 11:14:55
【问题描述】:

我已阅读this documentation,它解释了如何在执行期间创建纯文本日志文件。正如它所说的是Debug FileAll messages got from test libraries are written to them;但我正在寻找一种方法来控制其内容的日志级别。没有任何机制或技巧来获得它吗?或者甚至任何其他也具有Debug file 功能的机器人框架选项(在测试进行时将测试执行消息写入纯文本)?

【问题讨论】:

  • 你见过--loglevel <option>吗?我从未使用过它,所以我不知道它是应用于调试文件还是仅应用于日志文件(可能只是日志文件 TBH,但值得一试。robotframework.org/robotframework/latest/…
  • 我也没有使用过这个 Debug 文件,但是您可以使用 Listener 接口轻松创建自己的自定义日志:robotframework.org/robotframework/latest/… 我会说它值得探索和尝试。
  • @Goralight,--loglevel 选项用于设置 HTML 报告和日志文件的日志级别。我测试了它;它不适用于调试文件。
  • @ZeinabAbbasi 这么想,只是把它扔给你看看它是否会起作用。我不认为 RF 内置了类似的东西,我担心 :(
  • @JanKovařík,感谢您的链接,但不幸的是它不符合我的需要。 Listeners 可适配为在事件发生时执行特定动作;例如,当一个套件启动时,指定Listeners 会收到一条消息,如果他们为start_suite 执行了一些操作,它将被执行。除了 runner 现在提供的之外,没有提供对输出文件的日志级别的控制。

标签: logging robotframework logfile log-level


【解决方案1】:

无法控制进入调试文件的详细信息量。调试文件的重点是为调试目的创建详细的输出。

如果您希望在测试运行时将信息写入纯文本文件,您可以创建一个listener,以便随时随地写入您想要的任何内容。

例如,假设您想写下每个测试开始和结束的时间。第一步是创建一个监听器。对于此示例,创建一个名为“CustomLog.py”的文件,其内容如下:

import datetime
class CustomLog:
    ROBOT_LISTENER_API_VERSION = 2

    def __init__(self, filename='listen.txt'):
        self.logfile = open("/tmp/robot.log", 'w')

    def _write(self, message):
        now = datetime.datetime.now()
        self.logfile.write(str(now) + " " + message + "\n")
        self.logfile.flush()

    def start_test(self, name, attrs):
        self._write("start_test: %s" % name)

    def end_test(self, name, attrs):
        self._write("end_test: %s (%s)" % (name, attrs["status"]))

    def close(self):
        self.logfile.close()

您可以通过--listener 参数将此文件的名称传递给机器人:

robot --listener CustomLog.py ...

侦听器界面使您能够执行套件、测试和关键字启动和停止的操作。这些方法都包含在文档中。

【讨论】:

猜你喜欢
  • 2012-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-16
  • 1970-01-01
相关资源
最近更新 更多