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

时间:2015-05-18 08:46:17

标签: unit-testing robotframework

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

例如:

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

如果登录失败,我需要停止测试套件。当我定义"执行有效登录时,我可以使用任何关键字"关键字或者是需要从" Suite Teardown" (如果是这样的话)。

如果我运行关键字"如果测试失败则运行关键字"如果任何测试用例失败,它将停止测试套件。意味着如果"测试A"它会停止而不是继续进行测试B"。

谢谢。

2 个答案:

答案 0 :(得分:3)

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

  

停止整个测试执行。

     

使用此关键字的测试或套件未通过提供   消息,后续测试因预设消息而失败。可能   然而,撕裂将被执行。

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

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

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

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

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

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

答案 1 :(得分:0)

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

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

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

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