如果以前都已通过

时间:2018-03-27 15:18:12

标签: robotframework

TL:DR; 如果所有先前的测试都已通过,我想运行测试,否则跳到下一个测试。

我有一个带有几个测试的序列:

Test A, Test B and Test C 

如果所有这些测试都通过,我想要运行测试D.我找到了两个在我的应用程序中不起作用的解决方案。

  1. 使用--exitonfailure运行机器人以在第一次失败测试时停止。这里的问题是我想记录所有测试是否通过,以备将来参考和统计。

  2. 将测试D作为关键字并在套件拆解中使用Run Keyword If All Tests Passed | Test D。这里的问题是测试是在GUI中运行的,测试在运行时显示,运行测试A等。如果我将测试D放在Suite Teardown中,如果失败则不会显示。

  3. 基本上我希望像Run Keyword If All Tests Passed | Test D这样的函数能够在拆解之外工作。

2 个答案:

答案 0 :(得分:3)

测试套件启动后,您无法跳过测试。您可以做的最好的事情是添加一个关键字,导致测试通过或失败,具体取决于另一个测试的结果,然后在测试设置中调用该关键字。

多年来一直在讨论跳过测试的能力,但在我写这篇文章时,核心团队仍然对添加该功能有很多犹豫。

此功能的机器人框架故障单跟踪系统目前有一个打开的故障单,需要进行大量讨论。见https://github.com/robotframework/robotframework/issues/2087

对于允许您在先前的测试失败时让测试失败的库的实现,请参阅问题this answerAutomatic failing/non-execution of interdependent tests in Robot Framework。它应该是一个相当简单的修改,让它通过测试而不是导致它失败。

答案 1 :(得分:1)

如果您希望防止执行测试套件D时由于先前的故障而导致其慢慢失败,请将其作为suite of suites运行全局变量。 更改套件拆解中的全局变量A,B,C conditionally,并在全局变量值上有条件地在测试套件D的套件设置中调用Fatal Error

这应该阻止执行并使所有D从启动失败。

我使用了类似的东西,我必须对几个必须在单独的测试套件文件中的东西进行e2e测试。如果初始登录失败,那么继续没有任何意义,所以我没有像这样失败。