在Robot Framework中查找关键字名称(或关键字名称堆栈)

时间:2017-02-28 12:34:09

标签: python testing robotframework keyword

我一直在努力解决与此问题相同的问题:Robot Framework location and name of keyword - 我需要找一个关键字名称堆栈(我现在对关键字文件名不感兴趣)。
似乎作者找到了解决方案。
不幸的是,我无法应用它,因为在我的Robot Framework(3.0.2)版本中,对象_ExecutionContext没有字段或属性关键字,所以在我的情况下,行EXECUTION_CONTEXTS.current.keywords[-1].name
提出异常。谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

解决问题的最简单方法可能是合并keyword library and listener into a single module。监听器可以跟踪已调用的关键字,并且库可以提供允许访问该关键字列表的关键字。

这是一个非常基本的例子。没有错误检查,它需要完全匹配,但它说明了一般的想法。

首先,自定义库:

word

接下来,使用它的一个例子:

from robot.libraries.BuiltIn import BuiltIn

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

    def __init__(self):
        self.ROBOT_LIBRARY_LISTENER = self
        self.keywords = []

    # this defines a keyword named "Require Keyword"
    def require_keyword(self, kwname):
        if kwname not in self.keywords:
            raise Exception("keyword '%s' hasn't been run" % kwname)

    # this defines the "start keyword" listener method.
    # the leading underscore prevents it from being treated
    # as a keyword
    def _start_keyword(self, name, attrs):
        self.keywords.append(name)