【问题标题】:Stopping whole test suite if one specific test case failed如果一个特定的测试用例失败,则停止整个测试套件
【发布时间】:2015-05-19 14:49:42
【问题描述】:

我正在尝试在特定测试用例失败后阻止测试套件继续运行。

例如:

*** Test Cases ***
|Log In 
|           |Perform Valid Login 
|Test A
|           |Do A 
|Test B
|           |Do B

我需要在登录失败时停止测试套件。当我定义“执行有效登录”关键字时,我是否可以使用任何关键字,或者是否需要从“套件拆解”中完成(如果是的话)。

如果我运行关键字“如果测试失败则运行关键字”,如果任何测试用例失败,它将停止测试套件。这意味着如果“测试 A”出现问题,它将停止并且不会继续“测试 B”。

谢谢。

【问题讨论】:

    标签: unit-testing robotframework


    【解决方案1】:

    您可以调用内置关键字Fatal Error 来暂停执行。来自文档:

    停止整个测试执行。

    使用此关键字的测试或套件因提供的而失败 消息,并且随后的测试失败并显示固定消息。可能的 尽管如此,还是会执行拆卸。

    您可以将其放入测试拆解中,并且仅在测试失败时才调用它:

    *** Test Cases ***
    | Log In
    | | [Teardown] | Run keyword if test failed
    | | ... | Fatal Error | Unable to log in
    

    当然,如果需要,您也可以直接在关键字中调用Fatal Error。您可以使用普通的Run keyword if 语句代替Run keyword if test failed,并为其提供一些可以确定登录是否成功的测试。

    一般来说,让测试依赖于其他测试被认为是糟糕的测试设计。任何给定的测试都不应该依赖于任何其他测试。例如,此设置将阻止开发人员仅运行“测试 B”,因为“测试 B”依赖于首先运行的“登录”。

    有时这是不可避免的,但如果这更多是设置步骤而不是实际测试用例,您可能需要考虑将登录名移至套件设置。如果套件设置失败,所有其他测试将立即失败,并显示一条消息指出套件设置失败。

    另一种选择是添加一个特殊关键字来断言您已正确登录。然后,您将其设置为除登录测试之外的每个测试的测试设置关键字。当每个测试运行时,它会做的第一件事是检查它是否已登录,如果没有,它会立即失败。

    【讨论】:

    • 我想我不够清楚。致命错误导致手动停止。如果测试用例在测试过程中失败,我需要停止测试套件。
    • @PurpleBeni:我不明白你的评论。什么是“手动停止”?您是否尝试过使用Fatal Error 来查看它的作用?
    • 是的,我有。它运行测试用例,当涉及到该代码行时,它会停止测试。只有当程序导致测试用例出现错误时我才需要停止(不是我插入的手动错误,如致命错误)。
    • @PurpleBeni:对不起。我假设你知道你可以通过“Run Keyword If”运行该测试。我会尽量澄清我的答案。
    【解决方案2】:

    看来您应该定义一个进行登录的套件设置。

    这样,如果登录失败 - 整个套件都会失败。

    或者 - 您还可以通过以下方式定义执行有效登录测试:

    Login Test
        Perform Valid Login
        [teardown]  Run Keyword If Test Failed  Fatal Error
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-09
      • 1970-01-01
      • 2020-04-14
      • 1970-01-01
      • 1970-01-01
      • 2016-01-24
      • 2011-10-12
      • 2021-07-04
      相关资源
      最近更新 更多