【问题标题】:Robot Framework custom keyword only in Test SetupRobot Framework 自定义关键字仅在测试设置中
【发布时间】:2019-11-02 23:58:19
【问题描述】:

Robot Framework 中是否有可能只允许在测试设置部分(或者在测试拆解中)执行自定义关键字?假设我有一个名为My Setup 的关键字。如果My Setup 在正常步骤中执行(即不在测试设置中),则测试应该失败。关于 User keywords 和浏览 StackOverflow 的 RF 文档没有给我任何有意义的结果。

例如,Robot Framework 的内置函数Run keyword if all tests passed 中的文档指出“尝试在其他任何地方使用它会导致错误”,所以我想知道应该有某种方法将其应用于自定义关键字也是。

我已尝试通过在开始执行测试之前解析测试文件并检查是否出现不在测试设置中的My Setup 来解决此问题。但是,这感觉很麻烦,所以我正在寻找如下内容:

def MySetup(self, some_arg):
    if MAGIC.not_inside_test_setup():
        raise AssertionError('"My Setup" can be executed only in Test Setup')

【问题讨论】:

    标签: python robotframework


    【解决方案1】:

    在一位同事的帮助下,我设法解决了这个问题。解决方案如下:

    假设My Setup 关键字在名为My Library 的库中定义。

    1. 使用侦听器检查自定义关键字My Setup 何时通过称为start_keyword 的侦听器方法执行。该方法包含关键字是作为常规关键字还是作为 Test Setup/Teardown 关键字执行的信息。
    2. 如果My Setup 作为not-test-setup 关键字运行,则在监听器中My Library 内的全局错误标志应通过My Library 的实例设置
    3. My Setup开始执行时,检查My Library中的全局错误标志是否被设置;如果设置则会引发错误。

    我的图书馆.py

    SETUP_ERROR = None
    
    class MyLibrary(object):
    
        def MySetup(self, some_arg):
            global SETUP_ERROR
    
            if SETUP_ERROR:
                raise AssertionError(SETUP_ERROR)
    
            # Otherwise continue with the setup
    
        def _SetError(self, error):
            global SETUP_ERROR
            SETUP_ERROR = error
    

    监听器.py

    from MyLibrary import MyLibrary
    
    class MyListener(object):
        # ...
        def start_keyword(self, name, attributes):
            if name == 'MyLibrary.My Setup' and attributes['type'] != 'Setup':
                MyLibrary()._SetError('"My Setup" can be executed only in Test Setup')
    

    【讨论】:

    • 您可以将监听器和关键字库合并到一个文件中——关键字库也可以是监听器。见Test libraries as listeners
    • @BryanOakley 好点和有用,特别是如果只有例如侦听器中需要start_keyword。但是,在我的情况下,My Library 已经膨胀,因此将它们分开是有意的。
    猜你喜欢
    • 1970-01-01
    • 2020-02-05
    • 2019-01-13
    • 2015-10-09
    • 2017-11-18
    • 1970-01-01
    • 2013-09-06
    • 2021-08-31
    • 2018-10-10
    相关资源
    最近更新 更多