机器人框架:退出if子句但没有关键字?

时间:2019-02-11 14:04:18

标签: robotframework

一些RF伪代码:

Run keyword if  X == 1
   Run keyword if  Y == a  [do something]
   Run keyword if  Y == b  [do something]
   Run keyword if  Y == c  [do something]

如果Y == b,有没有办法退出if子句而不退出整个关键字?

我知道run keyword and return,但是它退出了整个关键字,我只想退出if子句,因为没有必要检查条件Y是否为c,d,e等。是真的。

(注:这是一个在两个值集之间进行转换的帮助程序类。此外,还有三个以上的“子条件”。)

2 个答案:

答案 0 :(得分:2)

我认为您可以将IF语句包装到另一个这样的关键字中:

Do Switch
  Run Keyword If  Y == a  [do something]
  ...    ELSE IF  Y == b  [do something]
  ...    ELSE IF  Y == c  [do something]

Run keyword if  X == 1
    Do Switch

答案 1 :(得分:0)

在ROBOT Framework中,您无法像在编程语言中那样进行嵌套循环。.因此,我们在ROBOT脚本中所采用的方法如下所示。

  1. 如果$ {X} =='1',请使用RUN关键字
  2. 如果为true,则调用另一个/新的USER_DEFINED_KEYWORD(自定义关键字),其中包含您的条件语句。

因此,您必须预先创建包含您的条件语句的YOUR_NEW_KEYWORD。然后,如果(X == 1)为true,则将调用此新创建的关键字。因此,您需要的方法如下所示。 此外,如果要在满足条件后退出循环,则必须使用EXIT FOR LOOP IF关键字。

RUN KEYWORD IF     ${X} == '1'    YOUR_NEW_KEYWORD # *this user-defined keyword contains the code below..*

# this is the content of YOUR_NEW_KEYWORD which contains conditional statements..
:FOR ${check}  IN  TRUE
  Run keyword if  Y == a  [do something]
  EXIT FOR LOOP IF Y == a

  Run keyword if  Y == b  [do something]
  EXIT FOR LOOP IF Y == b

  Run keyword if  Y == c  [do something]
  EXIT FOR LOOP IF Y == c

在ROBOT Framework中,我们通常创建许多用户定义的关键字(自定义关键字),然后将其导入为资源文件。在ROBOT Framework中,我们可以导入LIBRARY和RESOURCE FILE(我们自己定义的关键字)。这是一种很好的方法(代码重构),因为您不想在主测试脚本中编写任何内容,因此可以使您的代码更加整洁且易于阅读,相反,我们将更喜欢调用我们编写为“资源文件”的“用户关键字”。 / p>