通常从关键字中获取返回值并不是什么大事,
${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