我如何才能将Cucumber步骤失败的屏幕截图准确地附加到“魅力”报告中,而不是在“拆卸”部分中?

时间:2019-05-31 12:24:44

标签: java gradle cucumber allure selenide

我无法在“魅力”报告中的步骤下添加失败的黄瓜步骤的屏幕截图。

我使用allure-cucumber4-jvm:2.12.1,cucumber-java:4.3.1,并尝试将已测试的Web应用程序的屏幕截图添加到在黄瓜步骤失败的情况下完全正确地报告报表。因此,我尝试使用了黄瓜的@AfterStep和@After注释,并在case.isFailed()条件下在带注释的方法中添加了屏幕截图。但是问题在于,在“拆解”部分中的所有步骤之后都添加了屏幕截图。唯一的区别是@After方法仅被调用一次,而@AfterStep方法则被每个步骤调用。

@AfterStep
public void addScreenshotOnFailed(Scenario scenario) throws IOException {
        if (scenario.isFailed()) {
            try {
                Allure.addAttachment("Failed step", new FileInputStream(Screenshots.takeScreenShotAsFile()));
            } catch (FileNotFoundException ignored) {}
        }
    }

我希望测试的Web应用的屏幕截图恰好在失败的黄瓜步骤下进行?但实际上在所有情况下我都在“拆机”部分

1 个答案:

答案 0 :(得分:0)

想法正在使用事件捕获步骤状态并嵌入屏幕截图。如果我是正确的,则根据当前设计,AfterStep将在步骤失败时不执行。因此,我们必须在挂钩中使用AfterConfiguration。

Ruby: 这是ruby的实现。

AfterConfiguration do |scenario, config|
    config.on_event :test_step_finished do |event|
        if event.result.failed?
          # get screenshot
        end
    end
  end

检查此thread有关诱惑力的实现方式。