【问题标题】:Fail a keyword without stopping the test execution in robotframework在不停止机器人框架中的测试执行的情况下使关键字失败
【发布时间】:2018-12-05 00:56:01
【问题描述】:

我从关键字中引发错误的方法是使用 robots.api.logger 类

def test_keyword():
    logger.error("Report error")

这会在关键字下的 log.html 文件中创建一个错误行,但不会使关键字失败。

我使关键字失败的方法是引发异常。

def test_keyword():
    raise Exception("Not implemented")

这会使关键字以及调用关键字的测试用例失败。但这也停止了测试用例的进一步执行。

有什么方法可以在不停止测试用例执行的情况下使关键字失败?

【问题讨论】:

  • 这是什么意思?关键字失败 - 测试用例失败。继续执行测试的原因是什么?
  • 您能解释一下这与您当前的logger.error() 方法有何不同吗?从您的描述看来,这正是您想要的。
  • @Psytho :考虑一个测试用例中包含多个验证/验证关键字的测试用例。例如:verify_xyz_component_is_visible()、verify_total_displayed_for_column() 等。如果我的第一个关键字 verify_xyz_component_is_visible() 失败,我仍然想在停止执行测试之前检查我的第二个关键字 verify_total_displayed_for_column() 和之后的关键字的状态
  • 您可以使用Run Keyword And Ignore Error或Run Keyword And Continue On Failure或Run Keyword And Return Status。
  • @A.Kootstra :从关键字中调用 logger.error() 会记录错误,但该关键字的状态仍为 PASS。我想要的是有一种机制可以使关键字失败(在不停止执行的情况下将状态更改为FAIL

标签: robotframework


【解决方案1】:

来自documentation:

库关键字使用异常报告失败,并且可以使用特殊异常告诉核心框架无论失败都可以继续执行。

当测试结束并且出现一个或多个持续失败时,测试将被标记为失败。如果失败不止一个,在最后的错误信息中会一一列举:

Several failures occurred:

1) First error message.

2) Second error message ...

从测试库发出这一信号的方法是向用于传达故障的异常添加一个具有 True 值的特殊 ROBOT_CONTINUE_ON_FAILURE 属性。下面的例子证明了这一点。

class MyContinuableError(RuntimeError):
    ROBOT_CONTINUE_ON_FAILURE = True

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-02
    • 2020-11-06
    • 2019-04-19
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    • 2013-11-08
    • 2018-03-14
    相关资源
    最近更新 更多