【问题标题】:How to use values from one keyword to another keyword in robot framework如何在机器人框架中使用从一个关键字到另一个关键字的值
【发布时间】:2019-04-02 20:46:01
【问题描述】:

我想使用关键字 1 到关键字 2 的值。尝试在网上搜索但我无法解决。

Verify that apps are listed
    wait until element is visible  ${AppMenuGrid}   ${Timeout}      "Apps NOT listed. Step execution failed"
    log     "Apps listed"
    ${APPSCOUNT} =   GET ELEMENT COUNT  ${AppMenuGrid}
    log     "Number of apps loaded are ${APPSCOUNT}"
    [Return]  ${APPSCOUNT}

Click on Refresh button
    wait until element is visible  ${Refresh}   ${Timeout}      "Refresh button is not visible"
    click element  ${Refresh}
    log     "click on refresh button successful"

Verify that same apps are listed
    wait until element is visible  ${AppMenuGrid}   ${Timeout}      "Apps list not refreshed. Step execution failed"
    log     "Apps list refreshed"
    ${APPSRECOUNT} =   GET ELEMENT COUNT  ${AppMenuGrid}
    ${Count} =  verify that apps are listed     ${APPSCOUNT}
    log     "Number of apps before refresh ${Count}"
    log     "Number of apps after refresh ${APPSRECOUNT}"
    run keyword if  "${APPSRECOUNT}" == "${Count}"      log     "Number of apps matching after refresh"
    ...         ELSE        fail        "All apps not loaded after refresh"

我想使用关键字“验证是否列出了应用程序”中的 AppsCount 值(例如 .10)到“验证是否列出了相同的应用程序”关键字。但在第二个关键字中,APPSCOUNT 值始终为空。

【问题讨论】:

    标签: robotframework


    【解决方案1】:

    更改关键字Verify that same apps are listed 以接受参数:

    Verify that same apps are listed
        [Arguments]    ${expected appscount}
        # the rest of its code
    

    然后,在使用它的情况下,传递第一个关键字的值:

    A case
        ${the count}=    Verify that apps are listed
        Verify that same apps are listed    ${the count}
    

    【讨论】:

      【解决方案2】:

      我同意 Todor Minakov 的方法,即通过返回子句分享价值。这是另一种方法:

      Robot Framework(如User Guide 中所述)具有变量范围的概念:本地(关键字)级别、测试用例级别、测试套件级别和全局。默认情况下,关键字中定义的变量具有局部作用域。

      要在两个关键字之间共享变量的值,只需为变量添加一个测试用例范围,如下所示:

      Verify that apps are listed
          wait until element is visible  ${AppMenuGrid}   ${Timeout}      "Apps NOT listed.   Step execution failed"
          log     "Apps listed"
          ${APPSCOUNT} =   GET ELEMENT COUNT  ${AppMenuGrid}
          Set Test Variable    ${APPSCOUNT}
      

      然后,您可以在同一测试用例中的任何其他关键字中调用${APPSCOUNT},它将具有存储的值。

      【讨论】:

      • 这将设置关键字之间的隐式依赖关系 - 一个必须调用 Verify that apps are listed 来设置变量,否则另一个 kw 将不起作用 - 引用未设置的变量。取决于一个状态——并且有一个显式或隐式的过程来创建它,这不是一个好习惯;甚至 IMO - 维护的噩梦。
      • 使用“above”没有意义。在我写这篇文章的时候,这个答案上面没有答案。
      • @BryanOakley 因为在撰写该答案时,它低于 Todor Minakov 的答案。但是,你是对的:)
      【解决方案3】:

      我尝试了以下方法并且成功了。

      在测试用例文件中,我添加了一个同名的变量 ${APPSCOUNT} 并将变量设置为关键字,如下所示, 验证是否列出了应用 ${APPSCOUNT}

      在此之后,我可以在关键字 2 中看到关键字 1 的值。 这是正确的方法吗?

      【讨论】:

        猜你喜欢
        • 2021-01-02
        • 2019-04-09
        • 1970-01-01
        • 2017-11-11
        • 2013-11-08
        • 2020-11-06
        • 2021-12-02
        • 1970-01-01
        • 2015-09-23
        相关资源
        最近更新 更多