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