【问题标题】:robot framework: exception handling机器人框架:异常处理
【发布时间】:2015-09-10 19:35:48
【问题描述】:

是否可以处理来自测试用例的异常?我想跟踪 2 种失败:测试未能运行,测试运行但收到错误的输出。如果我需要引发异常以使我的测试失败,我如何区分这两种失败类型?所以说我有以下内容:

*** Test Cases ***
Case 1
    Login            1.2.3.4    user    pass
    Check Log For    this log line

如果我无法登录,那么Login 关键字会引发ExecutionError。如果日志文件不存在,我也会得到一个ExecutionError。但是如果日志文件确实存在并且该行不在日志中,我应该得到一个OutputError

我可能想立即让ExecutionError 上的测试失败,因为这意味着我的测试没有运行,并且存在一些需要在环境或测试用例中修复的问题。但是在OutputError 上,我可能想继续测试。它可能仅指单个输出,并且该测试可能对继续检查输出的其余部分很有价值。

如何做到这一点?

【问题讨论】:

    标签: testing robotframework


    【解决方案1】:

    Robot 有几个关键字用于处理错误,例如Run keyword and ignore error,可用于运行另一个可能失败的关键字。来自文档:

    这个关键字返回两个值,所以第一个是字符串 PASS 或 FAIL,取决于执行关键字的状态。这 第二个值要么是关键字的返回值,要么是接收到的 错误信息。如果您只是,请参阅运行关键字和返回状态 对执行状态感兴趣。

    话虽如此,编写一个基于 python 的关键字来调用您的 Login 关键字可能更容易,因为它会更容易处理多个异常。

    【讨论】:

      【解决方案2】:

      你可以使用这样的东西

      ${err_msg}=  Run Keyword And Expect Error  *  <Your keyword>
      Should Not Be Empty  ${err_msg}
      

      您可以尝试几种不同的变体 Run Keyword And Continue On Failure, Run Keyword And Expect Error, Run Keyword And Ignore Error 上面的第一个语句。

      上面第二条语句的选项是Should Be Equal As StringsShould ContainShould Match

      您可以在Robot keywords 上探索更多信息

      【讨论】:

        猜你喜欢
        • 2019-12-18
        • 1970-01-01
        • 2018-09-09
        • 1970-01-01
        • 2021-11-15
        • 1970-01-01
        • 1970-01-01
        • 2017-09-26
        • 1970-01-01
        相关资源
        最近更新 更多