Skip to main content
 首页 » 编程设计

python之Robot Framework 位置和关键字名称

2025年05月04日16pengyingh

我想创建一个带有 0 参数函数的 python 库,我的自定义 Robot Framework 关键字可以调用该函数。它需要知道定义关键字的文件的绝对路径,以及关键字的名称。我知道如何使用 robot.libraries.BuiltIn 库和 ${SUITE_SOURCE} 和 ${TEST NAME} 对测试用例做类似的事情> 变量,但我找不到与自定义关键字类似的内容。我不在乎答案有多复杂,也许我必须深入了解 Robot Framework 的内部类并以某种方式访问​​该数据。有什么办法吗?

请您参考如下方法:

多亏了 janne,我才找到了解决方案。

from robot.running.context import EXECUTION_CONTEXTS 
 
def resource_locator(): 
    name      = EXECUTION_CONTEXTS.current.keywords[-1].name 
    libname   = EXECUTION_CONTEXTS.current.get_handler(name).libname 
    resources = EXECUTION_CONTEXTS.current.namespace._kw_store.resources 
    path = "" 
    for key in resources._keys: 
        if resources[key].name == libname: 
            path = key 
            break 
    return {'name': name, 'path': path} 

EXECUTION_CONTEXTS.current.keywords是调用的关键字栈,最早的在前,最近的在后,所以EXECUTION_CONTEXTS.current.keywords[-1]得到最后一个关键字,也就是调用这个函数的关键字。

EXECUTION_CONTEXTS.current.get_handler(name).libname 获取定义关键字 name 的库的名称。对于用户定义的关键字,它是文件名(不是完整路径)减去扩展名。

EXECUTION_CONTEXTS.current.namespace._kw_store.resources 是所有包含资源的字典,其中键是绝对路径。因为文件路径是键,所以我必须搜索键,使值的名称是定义关键字的资源的名称 (libname)