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

Unit testing 如果一个特定测试用例失败,则停止整个测试套件,unit-testing,robotframework,Unit Testing,Robotframework,我试图在特定测试用例失败后阻止测试套件继续 例如: *** Test Cases *** |Log In | |Perform Valid Login |Test A | |Do A |Test B | |Do B 如果登录失败,我只需要停止测试套件。当我定义“Perform Valid Login”关键字时,是否可以使用任何关键字,或者是否需要从“套件拆卸”中执行某些操作(如果是,如何执行) 如果我运行关键字“runkeywo

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

例如:

*** Test Cases ***
|Log In 
|           |Perform Valid Login 
|Test A
|           |Do A 
|Test B
|           |Do B
如果登录失败,我只需要停止测试套件。当我定义“Perform Valid Login”关键字时,是否可以使用任何关键字,或者是否需要从“套件拆卸”中执行某些操作(如果是,如何执行)

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


谢谢。

您可以调用内置关键字使执行暂停。从文件中:

停止整个测试执行

使用此关键字的测试或套件在提供的 消息,后续测试失败,生成一条屏蔽消息。可能的 尽管如此,仍将执行拆卸

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

*** Test Cases ***
| Log In
| | [Teardown] | Run keyword if test failed
| | ... | Fatal Error | Unable to log in
当然,如果您愿意,您也可以直接在关键字中调用
致命错误
。如果测试失败,您将使用正常的
runkeywordif
语句,并为其提供一些可以确定登录是否成功的测试,而不是
runkeywordif

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

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


另一个选择是添加一个特殊的关键字,以声明您已正确登录。然后,除了登录测试之外,您将此设置为每个测试的测试设置关键字。当每个测试运行时,它要做的第一件事就是检查它是否已登录,如果未登录,可能会立即失败

您似乎应该定义一个进行登录的套件设置

这样,如果登录失败,整个套件就会失败

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

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

我想我还不够清楚。致命错误导致手动停止。如果测试过程中测试用例失败,我需要停止测试套件。@PurpleBeni:我不理解你的评论。什么是“手动停止”?您是否尝试使用
致命错误
查看它的功能?是的,我尝试过。它运行测试用例,当涉及到该代码行时,它停止测试。只有当程序导致测试用例出错时,我才需要停止(不是像致命错误那样插入的手动错误)。@PurpleBeni:对不起。我假设您知道可以通过“run关键字If”运行该测试。我会尽力澄清我的答案。