If statement 从运行关键字中获取关键字的返回值

If statement 从运行关键字中获取关键字的返回值,if-statement,robotframework,return-value,multiple-return-values,If Statement,Robotframework,Return Value,Multiple Return Values,通常从关键字获取返回值不是什么大问题 ${myVar}= My Keyword 这将如预期的那样起作用 我试图解决的问题在类似以下情况下可能会出现。我通常都能找到工作,但我想找一个更好的方法 Run Keyword If '${someVar}' == 'True' Run Keywords ... Do Something ... AND ${myVar}= My Keyword ... AND

通常从关键字获取返回值不是什么大问题

${myVar}=     My Keyword
这将如预期的那样起作用

我试图解决的问题在类似以下情况下可能会出现。我通常都能找到工作,但我想找一个更好的方法

Run Keyword If     '${someVar}' == 'True'     Run Keywords
     ...     Do Something
     ...     AND     ${myVar}=     My Keyword
     ...     AND     Do More Stuff
当我需要写这样的东西时,
My关键字
关键字不会被识别为关键字,我无法运行测试。我可以把它从条件中拉出来,在之前运行关键字,但这意味着我将浪费时间运行一个不应该运行的关键字,有时会导致失败。我发现了这个,但这是针对单个关键字的,我不确定是否可以扩展到多个关键字。另外,还可能出现以下情况,使事情更加复杂,

Run Keyword If     '${someVar}' == 'True'     Run Keywords
     ...     Do Something
     ...     AND     ${myVar}=     My Keyword
     ...     AND     Do More Stuff
     ...     AND     ${myVar_2}=     My Other Keyword
     ...     AND     Do Other Stuff
有人有什么建议吗?我是否应该将一个
Run关键字If
拆分为几个
Run关键字If
,这样我就可以利用上面链接中的示例?如果有任何建议,我将不胜感激

更新: 如果其他人遇到这个问题,我解决这个问题的方法如下:

Run Keyword If     '${someVar}' == 'True'     Do Something
${myVar}=     Run Keyword If     '${someVar}' == 'True'     My Keyword
Run Keyword If     '${someVar}' == 'True'     Run Keywords
     ...     Do More Stuff
     ...     AND     And Do Other More Stuff

稍后我将研究新的
IF
条件,但我想在忘记之前立即更新它。

您链接到的问题是同一个解决方案,而不是运行一个或多个关键字

${result}=  Run keyword if  '${someVar}'  Run Keywords  ...
在这种情况下,
运行关键字
返回的内容将被分配给
${result}
。无法在
运行关键字的参数中进行变量赋值

如果需要运行多个步骤,最好使用这些步骤创建一个关键字,然后从
runkeyword If

注意:RobotFramework4.0(在我读到这篇文章的时候它还在)支持。据说它将在2020年底发布。本机IF语句允许您在IF块体中分配变量

有了对
IF
语句的新支持,您可以像这样重写示例:

IF    '${someVar}' == 'True' 
    Do Something
    ${myVar}=     My Keyword
    Do More Stuff
    ${myVar_2}=     My Other Keyword
    Do Other Stuff
END

谢谢我不知道有人支持IF语句。