【问题标题】:Return results in Robot Framework keyword?在 Robot Framework 关键字中返回结果?
【发布时间】:2011-11-26 16:08:13
【问题描述】:

运行关键字后如何返回结果?

例子:

mykey word [Arguments] input
   ${results}=  getme input

但我想使用这些结果:

 ${results} = mykey word  newinput

【问题讨论】:

  • 您能澄清一下您的问题吗?
  • 关于 RF 最重要的一点是,如果您曾经用任何其他语言编程过,请假装您对此一无所知。 (除非有问题的语言是 BASIC,在这种情况下,你会没事的。)
  • 哇@Keith Tyler,这是我最近在 SO 中看到的生产力较低的 cmets 之一(仍然不是“最”的一个),而且没有必要。 RF 是一个通用的自动化测试框架,它甚至没有试图成为一种编程语言;虽然有些人正试图推动这一点(我 - 被指控有罪)。虽然通用,并且用于自动化测试,但它确实提供了一些基本的编码概念 - 从控制流语句(循环、分支)、子程序(关键字)到范围。
  • 在这个问题的上下文中,返回值几乎不是基本的专有能力;)。在 RF 中,这以与(几乎)所有主流编程语言相同的方式完成 - 声明传递回其执行的结果/结果。毫不奇怪,这是通过一个名为 [Return] 的语句完成的,并提供要返回的值 (是的,复数,可以返回元组,接受它,Basic!????) - 就个人而言,我自然期望看到其他一些编码语言。

标签: robotframework


【解决方案1】:

Robot Framework 用户指南描述了如何从关键字返回值。请参阅User keyword return values

简短的版本是:在您的关键字中设置一个变量,并使用[return] 测试用例设置返回该变量。

这是一个例子:

*** Keywords ***
mykey word
  [Arguments]  ${input}
  ${string}=  set variable  the string is "${input}"
  [return]  ${string}

*** Test Cases ***
Call custom keyword and get result
  ${results}=  mykey word  newinput
  Should be equal    ${results}    the string is "newinput"

Robot 还提供了几个关键字来显式地从关键字中的任何位置返回值:

【讨论】:

  • 我使用的是robotframework 3.2.1,返回的小写字母r无法识别,需要R
  • @AdamMierzwiak:这不是真的。机器人不关心这个案子。此答案中的代码适用于机器人 3.2.1
  • ok,应该是pycharm中机器人插件的问题
  • @AdamMierzwiak:这完全有可能。我不使用pycharm所以我不知道。
【解决方案2】:

一个简单的例子可能会有所帮助:

*** Keywords ***
Convert temperature F To Centigrade
  [Arguments]  ${ftemp}
  ${ftemp} =  Convert To Float  ${ftemp}
  ${ctemp} =  ${0.9} * ${ftemp} - ${32}
  [Return]  ${ctemp}

Convert temperature C To Fahrenheit
  [Arguments]  ${ctemp}
  ${ctemp} =  Convert To Float  ${ctemp}
  ${ftemp} =  ${1.8} * ${ctemp} + ${32}
  [Return]  ${ftemp}

*** Test Cases ***
Verify Temperature Conversion  
  ${result} =  Convert temperature F To Centigrade  ${32}
  Should Be Equal  ${result}  ${0}
  ${result} =  Convert temperature C To Fahrenheit  ${0}
  Should Be Equal  ${result}  ${32}

【讨论】:

    【解决方案3】:

    使用 [Return] 返回结果。

    一个例子是:

    Time Stamp
    
          [Return]  ${time_stamp}
          ${secs}=  Get Time  epoch
          ${time}=  Get Time
          ${time_stamp}=  Convert To String      ${secs}
    

    ${time_stamp} 的值将存储在Time Stamp 关键字中。

    【讨论】:

      【解决方案4】:
      # This example will explain the usage of build in library keywords.
      # The "Evaluate", "Log", and "Return" settings by using Fahrenheit to Centigrade
      # conversion logic on the variable ${var1}.
      
      *** Variables ***
      ${var1}     32
      *** Keywords ***
      Convert temperature Fahrenheit To Centigrade
        [Arguments]  ${ftemp}
        ${ftemp} =  Convert To Number     ${ftemp}
        ${ctemp} =  evaluate  (5 * (${ftemp} - 32))/9
        [Return]  ${ctemp}
      
      
      *** Test Cases ***
      Verify Temperature Conversion F to C
        ${result} =  Convert temperature Fahrenheit To Centigrade  ${var1}
        Log  ${result}
        Should Be Equal As Numbers    ${result}   0.0
      

      【讨论】:

      • 请编辑您的答案并添加说明或有关其工作原理的信息,以便其他人可以轻松理解
      【解决方案5】:

      最简单的方法是在关键字末尾使用建议的 [Return] 标签,但也有其他方法。

      使用关键字设置全局变量,您可以使变量在运行它的关键字之外可访问,而无需从关键字本身返回任何内容。如果您想避免弄乱主变量列表并在后台放置一些变量,这很有用,但要像使用任何全局变量一样谨慎使用它。

      【讨论】:

        猜你喜欢
        • 2018-06-24
        • 2017-06-05
        • 1970-01-01
        • 2016-09-17
        • 1970-01-01
        • 2019-04-26
        • 2022-08-18
        • 2015-12-04
        • 1970-01-01
        相关资源
        最近更新 更多