在 Robot Framework 关键字中返回结果?

Posted

技术标签:

【中文标题】在 Robot Framework 关键字中返回结果?【英文标题】:Return results in Robot Framework keyword? 【发布时间】: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!????) - 就个人而言,我自然期望看到其他一些编码语言。 【参考方案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 还提供了几个关键字来显式地从关键字中的任何位置返回值:

Return from keyword Return from keyword if Run keyword and return Run keyword and return if Run keyword and return status

【讨论】:

我使用的是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] 标签,但也有其他方法。

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

【讨论】:

以上是关于在 Robot Framework 关键字中返回结果?的主要内容,如果未能解决你的问题,请参考以下文章

robot framework可以返回变量吗

使用 Jython 在 Robot Framework 中使用自定义 Java 关键字/库

在 Robot Framework 中传递 *args

在 Robot Framework 中返回两个值

Robot Framework - 如何在 Eclipse 中导入 SeleniumLibrary 关键字实现/文档

在 Robot Framework 中使用关键字驱动的方法执行测试用例时显示错误