1

我正在尝试使 Reportportal 集成与空手道版本 0.9.5.RC5 一起使用。我能够将结果推送到 Reportportal;但是,报告的步骤不按顺序进行,即使在使用适当的缺陷类型标记先前的故障之后,reportportal 也无法执行准确的自动分析。是否有人将 ReportPortal 与空手道版本 0.9.5.RC5 集成?

4

3 回答 3

2

空手道版本中经常发生不兼容的变化。

报告门户团队期待任何稳定版本的跟进。

但是贡献者将其更新为 0.9.5RC5 https://github.com/karthikbits/reportportal-karate

于 2020-02-10T18:13:59.417 回答
2

使用此类与报告门户接口: https ://github.com/reportportal/agent-java-karate/blob/a84d3bef617f0f7bf479de57a29477b4b84792ae/src/main/java/com/epam/RPReporter.java

在该提交中,开发人员更改了 Karate Runner,但我认为这太过分了,您可以使用 Karate 拥有的钩子并将其注入您的 runner。您也可以采用这种方法,但可能需要进行少量更改。

以下是我的看法。您可能需要根据需要对其进行调整。请注意注释了 startLaunch() 和 finishLaunch() 的 beforeAll() 和 afterAll(),这是由于我自己的代码在不同的 Runners 中执行了几个不同的启动。您可能想要取消注释这些。

在您使用该 RPReporter 类完成挂钩后,您将能够轻松地对其进行自定义。

请注意,我还没有玩过 gatling,可能想在 perfEvent 方法中添加一些东西,以从您的指标中排除与 Report Portal 的集成。

要将钩子添加到您的 Runner 只需使用Runner API的 .hook() 方法。

public class RPExecutionHook implements ExecutionHook {

    private RPReporter rpReporter;

    public RPExecutionHook2(RPReporter rpReporter) {
        this.rpReporter = rpReporter;
    }


    @Override
    public boolean beforeScenario(Scenario scenario, ScenarioContext context) {
        return true; // make sure you keep this true or it breaks the Karate logic for Scenario Outline
    }

    @Override
    public void afterScenario(ScenarioResult result, ScenarioContext context) {

    }

    @Override
    public boolean beforeFeature(Feature feature, ExecutionContext context) {
        log.debug("Starting new feature: " + feature.getName());
        this.rpReporter.startFeature(context.result);
        return true;
    }

    @Override
    public void afterFeature(FeatureResult result, ExecutionContext context) {
        log.debug("Finishing feature: " + result.getFeature().getName());
        this.rpReporter.finishFeature(context.result);
    }

    @Override
    public void beforeAll(Results results) {
        //this.rpReporter.startLaunch();
    }

    @Override
    public void afterAll(Results results) {
        //this.rpReporter.finishLaunch();
    }

    @Override
    public boolean beforeStep(Step step, ScenarioContext context) {
        return true;
    }

    @Override
    public void afterStep(StepResult result, ScenarioContext context) {

    }

    @Override
    public String getPerfEventName(HttpRequestBuilder req, ScenarioContext context) {
        return null;
    }

    @Override
    public void reportPerfEvent(PerfEvent event) {

    }
}
于 2020-07-19T14:27:31.450 回答
1

看看空手道 Maven Gradle 项目

于 2020-12-15T08:43:43.450 回答