繁体   English   中英

在Python库中注册Robot Framework侦听器

[英]Register Robot Framework listener within Python library

Robot Framework的Listener功能非常适合添加可以在命令行上调用的可选预处理/后处理,例如pybot --listener myListener.py mySuite.robot 但是,我正在为Robot Framework创建一个Python库,并且我想自动注册其侦听器而无需在命令行上调用,以便在导入我的库时始终使用那些侦听器(我希望使用关键字和侦听器一起工作)。 有没有一种使用Python代码注册侦听器的方法?

从机器人框架2.8.5开始,您可以将库注册为侦听器。 请参阅《机器人框架用户指南中的将测试库作为侦听器 原始功能请求在问题811中讨论

以下是一个简单的示例。 它是一个提供单个关键字“ require test case”的库。 此关键字将另一个测试用例的名称作为参数。 该库还是一个监听器,用于跟踪已运行哪些测试用例。 当关键字运行时,它将查看已运行的测试列表,如果所需的测试用例尚未运行或失败,则该测试将失败。

from robot.libraries.BuiltIn import BuiltIn

class DependencyLibrary(object):
    ROBOT_LISTENER_API_VERSION = 2
    ROBOT_LIBRARY_SCOPE = "GLOBAL"

    def __init__(self):
        self.ROBOT_LIBRARY_LISTENER = self
        self.test_status = {}

    def require_test_case(self, name):
        key = name.lower()
        if (key not in self.test_status):
            BuiltIn().fail("required test case can't be found: '%s'" % name)

        if (self.test_status[key] != "PASS"):
            BuiltIn().fail("required test case failed: '%s'" % name)

        return True

    def _end_test(self, name, attrs):
        self.test_status[name.lower()] = attrs["status"]

在测试用例中使用此示例:

*** Settings ***
| Library | /path/to/DependencyLibrary.py

*** Test Cases ***
| Example of a failing test
| | fail | this test has failed

| Example of a dependent test
| | [Setup] | Require test case | Example of a failing test
| | log | hello, world

看来我最近对文档没有足够的了解。 该确切功能是Robot Framework 2.8.5中的新增功能: http: //robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#test-libraries-as-listeners

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM