【问题标题】:Allure Framework: How to fail only one step in the test methodAllure Framework:如何在测试方法中只失败一步
【发布时间】:2015-05-15 06:52:32
【问题描述】:

有谁知道,如何在测试中只失败一个步骤并让测试完成所有步骤,使用 Allure 框架!

例如,我有一个包含 3 个测试步骤的测试,每个步骤都有自己的断言。它可能看起来像这样:

@Test
public void test() 
    step1();
    step2();
    step3();
}

@Step
public void step1() {
    Assert.assertEquals(1, 0);
}

@Step
public void step2() {
    Assert.assertEquals(1, 1);
}

@Step
public void step3() {
    Assert.assertEquals(2, 2);
}

当 step1 失败时,测试方法也会失败。是否有可能用自己的断言完成其他两个步骤并且不会通过测试?就像 TestNG 对 SoftAssert 所做的那样。 (org.testng.asserts.SoftAssert)

因此,我希望看到报告,我们可以在其中看到所有损坏和通过的测试步骤(在一种测试方法中),例如图片报告中的 1.4.9 Allure 版本https://github.com/allure-framework/allure-core/releases/tag/allure-core-1.4.9

【问题讨论】:

  • +1 - 这很重要,尤其是当您检查多个字段时 - 您应该知道所有不正确的数据(所有字段),而不是对每个字段进行“错误修复 >> 重新运行测试”。最好在单次测试运行期间收集更多信息。

标签: unit-testing frameworks report automated-tests allure


【解决方案1】:

也许你可以,但你不应该。你打破了测试的概念。测试是通过或失败并描述失败的东西。这不是可以部分失败的东西。

当你编写一个测试时,你应该只包含那些相互绑定的断言。就像第一个断言失败一样,您的功能根本不需要第二个断言。这意味着,如果您有不依赖于彼此的断言 - 您最好制作几个测试方法,它们将完全分开并且会分别失败。

简而言之,测试不应该在步骤失败后继续进行,仅此而已。否则——这是一个糟糕的测试。

附:这就是 JUnit 不允许软断言的原因。

P.P.S 如果您真的真的需要检查所有三件事 - 可能的解决方法是使用 ErrorCollector

【讨论】:

  • 感谢您的回答!是的,您对测试的概念是绝对正确的,但是如果我需要打破这个概念怎么办?例如:单击注册表单上的“提交”按钮后,我想知道下表中出现了哪些数据: - 客户; - 用户; - 账户; - 等等......顺序也很重要在这种情况下,softAssert 可以向我展示整个“图片”不幸的是,使用带有 Allure 的 ErrorCollerctor 仅显示 Allure 报告中的最后一个错误,但没有失败测试:) 是否存在在测试中只失败一步的其他方法?
猜你喜欢
  • 1970-01-01
  • 2018-09-10
  • 1970-01-01
  • 2013-12-01
  • 2017-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多