开发者社区> 问答> 正文

在Python库中注册Robot Framework侦听器

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

展开
收起
祖安文状元 2020-02-22 15:27:34 499 0
1 条回答
写回答
取消 提交回答
  • 从机器人框架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
    
    2020-02-22 15:27:45
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载