如果一个特定的测试用例失败,则停止整个测试套件

Stopping whole test suite if one specific test case failed

我试图阻止测试套件在特定测试用例失败后继续。

例如:

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

我需要停止测试套件仅当登录失败时。我在定义 "Perform Valid Login" 关键字时是否可以使用任何关键字,或者它是否需要从 "Suite Teardown" 完成(如果是的话如何)。

如果我 运行 关键字 "Run Keyword if Test Failed" 如果任何测试用例失败,它将停止测试套件。这意味着如果 "Test A" 出现问题,它将停止而不是继续 "Test B"。

谢谢。

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

Stops the whole test execution.

The test or suite where this keyword is used fails with the provided message, and subsequent tests fail with a canned message. Possible teardowns will nevertheless be executed.

你可以把它放在测试拆解中,只有在测试失败时才调用它:

*** 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,并为其提供一些可以确定登录是否成功的测试。

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

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

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

您似乎应该定义一个用于登录的套件设置。

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

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

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