在 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 关键字中返回结果?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Jython 在 Robot Framework 中使用自定义 Java 关键字/库