Robotframework Robot框架:如果输入了分支,请检查Run关键字
我有一个关键字,其中包含几个运行关键字If分支,如:Robotframework Robot框架:如果输入了分支,请检查Run关键字,robotframework,Robotframework,我有一个关键字,其中包含几个运行关键字If分支,如: main keyword with ${condition} Run Keyword If ${condition}=="1" keyword1 Run Keyword If ${condition}=="2" keyword2 我正在寻找一种机制来检查分支是否被执行。 我试过: 但我总是得到result1和result2 None,即使执行了关键字1或关键字2
main keyword with ${condition}
Run Keyword If ${condition}=="1" keyword1
Run Keyword If ${condition}=="2" keyword2
我正在寻找一种机制来检查分支是否被执行。
我试过:
但我总是得到result1和result2 None,即使执行了关键字1或关键字2
请给我一个提示,或者告诉我如何以更好的方式实现我的目标
LE:
我尝试了Bence Kaulics建议的第二种选择。
我的关键字现在如下所示:
*** Keywords ***
main keyword ${condition}
${result1} = run keyword if '${condition}'=='test_1' run keyword and return status keyword1
${result2} = run keyword if '${condition}'=='test_2' run keyword and return status keyword2
should be true ${result1} or ${result2}
keyword1
log "executed keyword1"
keyword2
log "executed keyword1"
他们的工作和预期的一样。如果没有执行分支,我的机器人就会失败
感谢您提供的解决方案!:) 您的
关键字1
和关键字2
可能没有任何返回值,否则${result1}
和${result2}
应该存储关键字的返回值
因此,要么在关键字中添加返回值:
*** Test Cases ***
Test
${result1}= Run Keyword If 1==1 Keyword1
Log Result1:${result1}
*** Keywords ***
Keyword1
No Operation
[return] Anything can be returned
输出:
或者,要获得状态结果,您可以使用下面的方法。如果你有没有返回值的关键字,这是一种方法
*** Test Cases ***
Test
${result1}= Run Keyword If 1==1 Run Keyword And Return Status Log 1
${result2}= Run Keyword If 2==3 Run Keyword And Return Status Log 2
Log Result1:${result1}
Log Result2:${result2}
这将产生以下产出:
谢谢您的回复!我的关键字1和关键字2是Python函数,但即使我的Python函数有返回值,我仍然会得到值为None的result1和result2。我也尝试了你的第二个建议,但我一定是做错了什么,因为我得到了一个错误-我在原始问题中添加了详细信息。@MonicaVoinescu您复制了
1
和2
,它们是我使用的Log
关键字的参数,但是您的关键字没有参数,所以您应该删除它们。如果1==1 Run关键字并返回Status关键字1而末尾没有1
,则只需要${result1}=Run关键字。@MonicaVoinescu与您共享Python函数,它应该与任何其他关键字一样工作。感谢您指出这一点!我删除了1和2,它可以完美地工作:)
*** Test Cases ***
Test
${result1}= Run Keyword If 1==1 Run Keyword And Return Status Log 1
${result2}= Run Keyword If 2==3 Run Keyword And Return Status Log 2
Log Result1:${result1}
Log Result2:${result2}