Robotframework 如何确定变量是否已定义?

Robotframework 如何确定变量是否已定义?,robotframework,metaprogramming,Robotframework,Metaprogramming,如何确定Robot框架脚本中是否定义了变量?我在做API测试,而不是UI测试。我有一个复杂的设置和拆卸序列,由于我通过脚本与多台计算机交互,因此如果发生致命错误,了解当前状态非常重要。我可以通过一些复杂的元变量集或变量跟踪列表来跟踪我所做的事情,但我更愿意查询是否定义了某个特定的变量,如果已经定义了,则采取适当的分解步骤 简化版本类似于: *** Test Cases *** Check monitor ${monitored}= Connect to Monitor ${Monit

如何确定Robot框架脚本中是否定义了变量?我在做API测试,而不是UI测试。我有一个复杂的设置和拆卸序列,由于我通过脚本与多台计算机交互,因此如果发生致命错误,了解当前状态非常重要。我可以通过一些复杂的元变量集或变量跟踪列表来跟踪我所做的事情,但我更愿意查询是否定义了某个特定的变量,如果已经定义了,则采取适当的分解步骤

简化版本类似于:

*** Test Cases ***
Check monitor
    ${monitored}=  Connect to Monitor  ${Monitor IP Address}  ${User name}  ${password}
    ${peer connected}=  Connect to Monitor  ${Peer IP Address}  ${User name}  ${password}
    Get Information from Monitor  ${IP Address}
    Send Info to Peer   ${buffer1}
    Report back to Monitor  ${Monitor IP Address}
我们假设拆除关闭了连接。我想关闭所有打开的连接,但是如果我无法打开对等连接,我将关闭监视器连接,并且无法关闭监视器连接


我正在尝试确定是否定义了${peer connected}。我是否可以查看Robot Framework的变量存储以查看它是否存在(在该字典中?)

有一种非常简单的方法-如果没有定义此类变量,内置关键字将返回python的
None
(默认情况下):

${the var}=    Get Variable Value    ${peer connected}
${is set}=      Set Variable If    """${the var}""" != 'None'    ${True}    ${False} 
您可以调用获取所有变量的字典,然后检查您感兴趣的变量是否在字典中

*** Test cases ***
Example
    ${foo}=        set variable  hello, world
    ${variables}=  Get variables

    Should be true      "\${foo}" in $variables
    Should not be true  "\${bar}" in $variables

谢谢,这正是我需要的。我可以检查此范围中是否存在必要的变量,并相应地失败或继续。调用${variables}和$variables有什么区别?我想知道为什么${variables}不起作用,但是$variables起作用。@KonstantinV:在机器人框架文档中描述了它