擅长:python、mysql、java
<p>多亏了珍妮,我才找到了解决办法。在</p>
<pre><code>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}
</code></pre>
<p><code>EXECUTION_CONTEXTS.current.keywords</code>是被调用的关键字的堆栈,最早的第一个和最近的最后一个,因此<code>EXECUTION_CONTEXTS.current.keywords[-1]</code>得到最后一个关键字,即调用此函数的关键字。在</p>
<p><code>EXECUTION_CONTEXTS.current.get_handler(name).libname</code>获取定义关键字<code>name</code>的库的名称。对于用户定义的关键字,它是文件名(不是完整路径)减去扩展名。在</p>
<p><code>EXECUTION_CONTEXTS.current.namespace._kw_store.resources</code>是包含所有资源的字典,其中的键是绝对路径。因为文件路径是键,所以我必须搜索该键,使值的名称是定义关键字的资源的名称(<code>libname</code>)</p>