【问题标题】:Robot Framework: Do something after the execution ends using a library as a listenerRobot Framework:在执行结束后使用库作为侦听器执行某些操作
【发布时间】:2017-01-05 20:55:06
【问题描述】:

我正在尝试在整个执行结束时收集文件:output.xml、report.html 和 log.html

我可以为此目的使用一个监听器,但我想避免写这样一行:

robot --listener "SomeListener.py" YourTestSuite.robot

然后,我查看了文档,发现可以将测试库用作侦听器并将其导入我的测试套件中,例如:

class SomeLibrary(object):
    ROBOT_LISTENER_API_VERSION = 2 # or 3
    ROBOT_LIBRARY_SCOPE = "GLOBAL" # or TEST SUITE

    def __init__(self):
        self.ROBOT_LIBRARY_LISTENER = self

    def start_suite(self, data, result):
        pass

    def close(self):
        pass

我的问题是当库超出范围时会调用 close 方法。因此,我无法收集报告文件,因为它们在那一刻不存在并且我收到错误消息。我也试过这个方法:

def report_file(self, path):
    pass

但是,什么都没有发生,我想这可能是因为作为侦听器的库无法使用 Listener API 中的这些方法,或者因为文件仍未创建。

关于如何使用库作为侦听器收集这些文件的任何想法? 我愿意接受想法或建议。

谢谢。

【问题讨论】:

    标签: python automated-tests robotframework


    【解决方案1】:

    Listener规范实际上指定了三个文件生成时触发的三个方法:

    startSuite
    endSuite
    startTest
    endTest
    startKeyword
    endKeyword
    logMessage
    message
    outputFile
    logFile
    reportFile
    debugFile
    

    看看最后 4 个,应该会有所帮助。有关更多详细信息,请查看侦听器 API 规范。 4.3.3 Listener interface methods

    【讨论】:

    • 嗨,我知道我可以使用这些方法,但问题是当我将库用作侦听器时的范围。我使用包装器解决了这个问题,该包装器使用一些预定义的参数执行机器人。
    • 很高兴听到您已经能够克服这个问题。将侦听器用作库允许更多可能令人困惑的范围选项。通过命令行加载侦听器 --listener 参数将其置于全局范围内,应该为您清除这些问题。
    猜你喜欢
    • 1970-01-01
    • 2012-01-14
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 2011-09-26
    相关资源
    最近更新 更多