Robotframework Robot框架:退出if子句,但不退出关键字?

Robotframework Robot框架:退出if子句,但不退出关键字?,robotframework,Robotframework,一些射频伪码: 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关键字和return,但它退出了整个关键字,我只想退出if子句,因为如果条件已经为真,则不需要检查Y是否为c

一些射频伪码:

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关键字和return
,但它退出了整个关键字,我只想退出if子句,因为如果条件已经为真,则不需要检查Y是否为c、d、e等等


(注意:这是一个助手类,可以在两组值之间进行转换。此外,还有三个以上的“sub-IF”。

我认为您可以将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

在ROBOT框架中,不能执行嵌套循环。。就像我们在编程语言中所做的。。因此,我们在机器人脚本中使用的方法如下所示

  • 如果${X}=='1',则使用RUN关键字
  • 如果为true,则调用另一个/新用户定义的关键字(自定义关键字),该关键字包含您的条件语句
  • 因此,必须先创建包含条件语句的新关键字。如果(X==1)为真,那么我们将调用这个新创建的关键字。因此,您需要的方法如下所示。。 此外,如果要在满足条件后退出循环,则必须使用
    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框架中,我们通常创建许多用户定义的关键字(自定义关键字),然后将其作为资源文件导入。在ROBOT框架中,我们可以导入库和资源文件(我们自己定义的关键字)。这是一种很好的方法(代码重构),可以使您的代码整洁且易于阅读,因为我们不想在主测试脚本中编写所有内容,相反,我们更愿意调用我们编写为资源文件的用户关键字。

    当您说“if子句”时你指的是一整块单独的IF语句吗?除了不填写日志和浪费时间之外,我还意识到了另一个要求。如果
    Y==
    的计算结果为true,我想运行最后一个特定的命令,而如果这个条件永远不满足,我就不想运行这一行。@BryanOakley我指的是外部If(x==1)。您是否知道,在编写时,它们在逻辑上并不都在第一个If内?就这一点而言,第一句话也行不通。如果您能提供一个实际运行的参数,那将非常有帮助。@BryanOakley外部if的第二个参数是
    运行关键字
    。但是请忽略细节。