【问题标题】:How do I find if a variable has been defined?如何查找是否已定义变量?
【发布时间】:2019-11-15 20:49:42
【问题描述】:

如何确定我的机器人框架脚本中是否定义了变量?我正在做 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 的变量存储以查看它是否存在(在那个字典中?)?

【问题讨论】:

    标签: robotframework metaprogramming


    【解决方案1】:

    您可以调用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} 和 $variables 有什么区别?我想知道为什么 ${variables} 不起作用,但 $variables 起作用。
    • @KonstantinV:在built-in library的机器人框架文档中有描述
    【解决方案2】:

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

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

    【讨论】:

    • 如果变量${the var}包含值None,即定义了变量WAS,则不满足条件,因为它包含值None
    【解决方案3】:

    我对这种方法很好。如果没有定义变量,测试用例不会失败......

    ${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}
    

    【讨论】:

      【解决方案4】:

      也可能是:

      ${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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-19
        • 1970-01-01
        • 2018-05-21
        • 1970-01-01
        • 1970-01-01
        • 2022-12-03
        • 2018-09-07
        相关资源
        最近更新 更多