Robotframework Robot框架:如果输入了分支,请检查Run关键字

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

我有一个关键字,其中包含几个运行关键字If分支,如:

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}