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

DDa*_*Day 3 metaprogramming robotframework

如何确定我的 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}
Run Code Online (Sandbox Code Playgroud)

我们假设拆卸会关闭连接。我想关闭所有打开的连接,但如果我无法打开对等连接,我将关闭监视器连接并在关闭监视器连接时失败。

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

Bry*_*ley 10

您可以调用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
Run Code Online (Sandbox Code Playgroud)


Tod*_*kov 5

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

${the var}=    Get Variable Value    ${peer connected}
${is set}=      Set Variable If    """${the var}""" != 'None'    ${True}    ${False} 
Run Code Online (Sandbox Code Playgroud)