如何查找变量是否已定义?

How do I find if a variable has been defined?

如何确定我的 Robot Framework 脚本中是否定义了变量?我正在进行 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 的变量存储以查看它是否存在(在那个字典中?)?

有一个非常简单的方法 - 如果没有定义这样的变量,则内置关键字 Get Variable Value returns python 的 None(默认情况下):

${the var}=    Get Variable Value    ${peer connected}
${is set}=      Set Variable If    """${the var}""" != 'None'    ${True}    ${False} 

您可以调用Get Variables获取所有变量的字典,然后检查您感兴趣的变量是否在字典中。

*** 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}  Get variables
${status}  Run Keyword And Return Status  Evaluate   $new_table in $variables
${new_table}  Set variable if  ${status}==${FALSE}  new_tbl  ${new_table}

也可能是:

${variables}  Get Variables
IF  "${dataPluginVersion}" in "${variables}"
  No Operation
ELSE
  ${dataPluginVersion}  Set Variable  0
END

或者:

${variables}  Get Variables
IF  not "${dataPluginVersion}" in "${variables}"
  ${dataPluginVersion}  Set Variable  0
END