【问题标题】:Run test if all previous have passed如果之前的所有都通过了,则运行测试
【发布时间】:2018-09-06 02:05:52
【问题描述】:

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

我有一个包含几个测试的序列:

Test A, Test B and Test C 

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

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

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

基本上我想要一个像 Run Keyword If All Tests Passed | Test D 这样的函数,它可以在拆解之外工作。

【问题讨论】:

    标签: robotframework


    【解决方案1】:

    一旦测试套件启动,您就不能跳过测试。您可以做的最好的事情是添加一个关键字,该关键字会根据另一个测试的结果导致测试通过或失败,然后在测试设置中调用该关键字。

    跳过测试的能力已经讨论了很多年,但在我写这篇文章的时候,核心团队仍然对添加这个功能犹豫不决。

    目前在机器人框架工单跟踪系统中有一个针对此功能的开放工单,并进行了大量讨论。见https://github.com/robotframework/robotframework/issues/2087

    对于一个库的实现,如果之前的测试失败,你会失败测试,​​请参阅这个this answer 到问题Automatic failing/non-execution of interdependent tests in Robot Framework。让它通过测试而不是导致它失败应该是一个相当简单的修改。

    【讨论】:

      【解决方案2】:

      如果您想防止由于先前的失败而缓慢失败的测试套件 D 的耗时执行,只需使用全局变量将其作为 suite of suites 运行即可。 在 Suite Teardown of A,B,C conditionally 中更改全局变量,并根据全局变量值在测试套件 D 的 Suite Setup 中调用 Fatal Error。

      这应该会阻止执行并使所有 D 从开始失败。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-04
        • 1970-01-01
        • 2023-04-11
        • 2018-08-15
        • 1970-01-01
        • 1970-01-01
        • 2013-07-21
        • 2021-10-29
        相关资源
        最近更新 更多