【问题标题】:Robot Framework: Check that Run Keyword If enters branchesRobot Framework:检查 Run Keyword If 是否进入分支
【发布时间】:2020-08-29 00:15:05
【问题描述】:

我有一个包含多个 Run Keyword If 分支的关键字,例如:

main keyword with ${condition}
    Run Keyword If    ${condition}=="1"    keyword1
    Run Keyword If    ${condition}=="2"    keyword2

我正在寻找一种机制来检查分支是否被执行。 我试过了:

main keyword with ${condition}
    ${result1}=    Run Keyword If    ${condition}=="1"    keyword1
    ${result2}=    Run Keyword If    ${condition}=="2"    keyword2
    Should Be True    ${result1} is not None or ${result2} is not None   

但我总是得到 result1 和 result2 None,即使执行了关键字 1 或关键字 2。

请给我一个提示,或者我可以如何以更好的方式实现我的目标。

乐: 我尝试了 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"

它们按预期工作。如果没有执行分支,我会在 Robot 中失败。

感谢您的解决方案! :)

【问题讨论】:

    标签: robotframework


    【解决方案1】:

    您的keyword1keyword2 可能没有任何返回值,否则${result1}${result2} 应该存储您的关键字的返回值。

    所以要么为你的关键字添加返回值:

    *** Test Cases ***
    Test
        ${result1}=    Run Keyword If    1==1    Keyword1
        Log    Result1:${result1}
        
    *** Keywords ***
    Keyword1
        No Operation
        [return]    Anything can be returned
    

    输出:


    或者要获得状态结果,您可以使用Run Keyword And Return Status,如下所示。如果你有没有返回值的关键字,这是要走的路。

    *** 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}
    

    这将给出以下输出:

    【讨论】:

    • 感谢您的回复!我的keyword1 和keyword2 是Python 函数,但即使我的Python 函数有返回值,我仍然会得到值为None 的result1 和result2。
    • 我也尝试了你的第二个建议,但我一定做错了,因为我收到了一个错误 - 我将它的详细信息作为 LE 添加到我原来的问题中。
    • @MonicaVoinescu 你复制了12,它们是我使用的Log 关键字的参数,但是你的关键字没有参数,所以你应该删除它们。你只需要${result1}= Run Keyword If 1==1 Run Keyword And Return Status keyword1,最后没有1
    • @MonicaVoinescu 分享你的 Python 函数,它应该和任何其他关键字一样工作。
    • 感谢您指出这一点!我删除了 1 和 2,它工作得很好:)
    猜你喜欢
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 2019-06-25
    • 1970-01-01
    • 2017-02-21
    相关资源
    最近更新 更多