如何处理 ride 机器人框架中的 try catch 异常?

How to handle try catch exception in ride robot framework?

我正在使用 RIDE robotframework,我想在应用程序崩溃时处理异常我关闭它然后打开它的一个新实例。

*** Settings ***
Library           SikuliLibrary

*** Variables ***
${openProject}    sikuli_captured\Emna\openProject.png
${DataBaseSTProject}    sikuli_captured\Emna\DataBaseSTProject.png
${testSession}    sikuli_captured\Emna\testSession.png
${menu}           sikuli_captured\menu.png
${fileName}       sikuli_captured\Emna\fileName.png
${save}           sikuli_captured\Emna\save.png

*** Test Cases ***
createNewProject
    Click    ${menu}
    Click    ${testSession}
    Input Text    ${fileName}    FirstProjecT3
    Click    ${save}

openTestProject
    Click    ${openProject}
    Double Click    ${DataBaseSTProject}

如有任何建议,我们将不胜感激。

感谢您的帮助:)

在 Robot Framework 中,Try/Catch/Finally 的概念不存在。本质上,您的 Test Case body 是这个三重奏的 Try 部分,另外两个组合到各自 Test Suite, Test Case or Keyword 部分的 [Teardown] 关键字中。

在此 Teardown 关键字中,可以通过 automatic variables of Robot Framework itself or the Run Keyword If ... family of keywords 识别测试用例是通过还是失败。这将允许您为 Catch 创建一个单独的部分,最后。在下面的代码部分中,给出了一个通过和失败测试用例的示例,每个都使用相同的拆解。

此构造应允许您检查测试用例中的步骤是否失败,验证应用程序是否已崩溃(通过弹出窗口的 Sikuli 图像测试),然后关闭并重新启动应用程序。

*** Test Cases ***

Open Application and fail
    Log to Console    About to Fail
    Fail
    Log to Console    Will never trigger.
    [Teardown]    Generic Test Case Teardown

Open Application and Pass
    Log to Console    About to Pass
    No Operation
    Log to Console    Will trigger.
    [Teardown]    Generic Test Case Teardown

*** Keywords ***
Generic Test Case Teardown
    # Catch of Try Catch Finally
    Run Keyword If Test Failed    Test Case Catch

    # Finally of Try Catch Finally
    #  RKITS is only executed when test passed.
    Run Keyword If Test Passed    Test Case Finally
    #  Always executed regardless of test execution status.
    Log To Console     I am always executed.

Test Case Catch
    Log To Console    Test Case Catch

Test Case Finally
    Log To Console    Test Case Finally

要添加到 Kootstra 的答案中,您可能想要测试函数是否失败但测试实际上没有失败。

*** Keywords ***
Do Something And Fail
    Log To Console  FAIL
    Fail

Do Something And Succeed
    Log To Console  SUCCESS

Test Something
    ${success}=  Run Keyword And Return Status  Do Something And Fail
    Log To Console  ${success}  #False
    ${success}=  Run Keyword And Return Status  Do Something And Succeed
    Log To Console  ${success}  #True

请参阅 Run Keyword And Return Status 文档。 将此与 Run Keyword If 结合使用以创建取决于关键字是否成功的行为。

从机器人框架 5.0 开始,现在应该可以使用 try/catch。Release notes 这是文档中的示例:

*** Test Cases ***
First example
    TRY
        Some Keyword
    EXCEPT    Error message
        Error Handler Keyword
    END
    Keyword Outside