从Run keyword If conditional Robot Framework中的关键字获取返回值



通常从关键字中获取返回值并不是什么大事,

${myVar}=     My Keyword

这将按预期进行。

在类似以下情况下,我试图解决的问题。我通常可以四处找工作,但我想找到更好的方法。

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

当我需要写这样的东西时,My Keyword关键字不会被识别为关键字,我无法运行我的测试。我可以把它从条件中提取出来,并在之前运行关键字,但这意味着我将浪费时间运行一个不应该运行的关键字,有时会导致失败。我发现了这个,如何从Robot Framework中Run Keyword If下调用的关键字中获取返回值?,但这是针对单个关键字的,我不确定我是否可以扩展到多个关键字。此外,在其他情况下,可能会出现以下情况,并使事情进一步复杂化,

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 Keyword If分解成几个Run Keyword 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  ...

在这种情况下,无论Run Keywords返回什么,都将被分配给${result}。无法在Run Keywords的参数中进行变量赋值。

如果您需要运行多个步骤,最好的方法是用这些多个步骤创建一个关键字,然后从Run keyword if调用该关键字

注意:robotframework 4.0(在我读到这篇文章时处于测试版(支持原生IF语句。据说它将在2020年底发布。本机IF语句允许您在IF块的主体中分配变量。

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

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

最新更新