【问题标题】:How to rerun failed features in karate?如何在空手道中重新运行失败的功能?
【发布时间】:2018-12-24 11:33:05
【问题描述】:

谁能帮我重新运行空手道中失败的功能。以下是用于并行的黄瓜选项和跑步者测试-

@CucumberOptions(features = "classpath:features/xxxxx/crud_api",
        format = {"pretty", "html:target/cucumber","json:target/cucumber/report.json", "rerun:target/rerun/rerun.txt" })



@Test
    public void  test() throws IOException {
        Results results = KarateRunnerTest.parallel(getClass(), threadCount, karateOutputPath);
        assertTrue("there are scenario failures", results.getFailCount() == 0);
    }

【问题讨论】:

  • 是的@PeterThomas,接受了这些。

标签: karate


【解决方案1】:

这是我使用 karate-1.0#retry-framework-experimental 的可重用实现,

Results retryFailedTests(Results results) {
        System.out.println("======== Retrying failed tests ========");

        Results initialResults = results;
        List<ScenarioResult> retryResult = results.getScenarioResults().filter(ScenarioResult::isFailed)
                .parallel()
                .map(scenarioResult -> initialResults.getSuite().retryScenario(scenarioResult.getScenario()))
                .collect(Collectors.toList());
        for (ScenarioResult scenarioResult : retryResult) {
            results = results.getSuite().updateResults(scenarioResult);
        }
        return results;
    }

这个 java 函数负责并行重试失败的场景。您可以查看karate-timeline.html报告来验证失败的场景是否被并行重试。

【讨论】:

    【解决方案2】:

    这不是空手道支持的东西,但在开发模式下(例如使用 IDE),您总是可以手动重新运行失败的测试。

    您似乎正在使用空手道不支持的注释选项,例如format。阅读文档以了解支持的内容仅限于 featurestags

    编辑 - 空手道 1.0 对此有实验性支持:https://github.com/intuit/karate/wiki/1.0-upgrade-guide#retry-framework-experimental

    【讨论】:

    • 嗨@peter-thomas,在使用独立JAR 时是否可以使用这个重试框架?我想我必须以某种方式实现一个自定义 Runner,但没有看到任何如何做到这一点的示例。
    • @mariaines - 理想情况下,您应该使用 Java / Maven 选项,因为您需要编写代码并编译它。但是如果你知道你在做什么,你可以使用独立的 JAR,参考:stackoverflow.com/a/56458094/143475
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    相关资源
    最近更新 更多