java - 如何将失败的 Cucumber 步骤的屏幕截图准确地附加到 Allure 报告中,而不是在“Tear Down”部分中?

标签 java gradle cucumber allure selenide

我无法在 Allure 报告的步骤下添加失败的 cucumber 步骤的屏幕截图。

我使用 allure-cucumber4-jvm:2.12.1、cucumber-java:4.3.1 并尝试将测试的 Web 应用程序的屏幕截图添加到失败的 cucumber 步骤下的 allure 报告中。所以我尝试使用cucumber的@AfterStep和@After注释,并在scenario.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) {}
        }
    }

我期望测试的网络应用程序的屏幕截图恰好位于失败的 cucumber 步骤下?但实际上我在所有场景之后都将其放在“拆解”部分中

最佳答案

Idea 使用事件来捕获步骤状态并嵌入屏幕截图。如果我是正确的,根据当前设计,当步骤失败时 AfterStep 不会执行。所以我们必须在钩子(Hook)中使用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关于诱惑的实现。

关于java - 如何将失败的 Cucumber 步骤的屏幕截图准确地附加到 Allure 报告中,而不是在“Tear Down”部分中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56395107/

相关文章:

java - java聊天客户端程序有没有办法动态查找主机服务器?

java - 如何在 vert.x java 中对处理程序进行单元测试?

Android Gradle 问题 : Caused by: groovy. lang.MissingMethodException:没有方法签名

gradle - Gradle 配置依赖和 Gradle 配置传入依赖有什么区别?

java - NoClassDefFoundError : cucumber/api/DataTable when trying to upgrade to Cucumber 4

java - Android M - SSLSocket 连接中的 SSLHandshakeException

android-studio - 如何防止 rawproto 文件生成或自动删除它们?

protractor - 如何为功能中的每个场景关闭和打开浏览器 - Protractor 和 cucumberjs

intellij-idea - IntelliJ Idea + cucumber运行配置: how to exclude @tags

java - 将 3 个 RGB 整型转换为 1 个 0-1 double 型