Reportportal の統合を Karate バージョン 0.9.5.RC5 で機能させようとしています。結果を Reportportal にプッシュできます。ただし、レポートの手順は順不同であり、reportportal は、以前の障害を適切な欠陥タイプでマークした後でも、正確な自動分析を実行できません。ReportPortal と Karate バージョン 0.9.5.RC5 の統合を行っている人はいますか?
3 に答える
レポート ポータルとのインターフェイスには、次のクラスを使用します: https://github.com/reportportal/agent-java-karate/blob/a84d3bef617f0f7bf479de57a29477b4b84792ae/src/main/java/com/epam/RPReporter.java
そのコミットで、開発者は空手ランナーを変更しましたが、それはやり過ぎだと思います。空手が持っているフックを使用して、ランナーに注入することができます。そのアプローチに従うこともできますが、変更がほとんど必要ない場合があります。
以下は私の見解です。必要に応じて微調整する必要があるかもしれません。startLaunch() と finishLaunch() がコメントされている beforeAll() と afterAll() に注意してください。これは、さまざまなランナーでいくつかの異なる起動を実行するときに、自分のコードが原因です。おそらく、それらのコメントを外したくなるでしょう。
RPReporter クラスにフックを配置したら、簡単にカスタマイズできるようになります。
まだガトリングで遊んでいないことに注意してください。レポート ポータルとの統合をメトリックから除外するために、perfEvent メソッドに何かを追加することをお勧めします。
ランナーにフックを追加するには、ランナー 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) {
}
}