You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Testcontainers录制的视频添加到Allure测试报告中

配置方案

1. withRecordingMode第二个参数配置

这个参数是指定本地用于存放录制视频的目录,需要提前创建确保有读写权限,示例代码如下:

static File recordingDir = new File("target/test-videos");
static {
    // 提前创建目录,避免路径不存在导致录制失败
    if (!recordingDir.exists()) {
        recordingDir.mkdirs();
    }
}

// 配置到withRecordingMode即可
.withRecordingMode(                        
        BrowserWebDriverContainer.VncRecordingMode.RECORD_ALL,
        recordingDir,
        VncRecordingContainer.VncRecordingFormat.MP4);

2. Allure.addAttachment第三个参数配置

你之前的错误在于直接读取目录作为输入流,Testcontainers会在你指定的目录下生成随机命名的视频文件,不需要手动拼接路径,直接调用容器提供的getRecordingFile()方法即可拿到生成的视频文件,示例代码如下:

@AfterAll
static void clean_up() throws Exception {
    // 从容器实例直接获取录制好的视频文件
    File recordingFile = browser.getRecordingFile();
    try (InputStream inputStream = new FileInputStream(recordingFile)) {
        // 第三个参数传入视频文件的输入流
        Allure.addAttachment("测试执行视频", "video/mp4", inputStream, ".mp4");
    }
    WebDriverRunner.closeWebDriver();
}

注意事项

  • 必须在容器销毁前调用getRecordingFile()获取视频文件,否则容器销毁后临时文件会被清理
  • 如果需要每个测试方法对应单独的视频,去掉容器的static修饰符,将@AfterAll改为@AfterEach,每个测试方法会启动独立容器生成单独的视频
  • 确保指定的视频存储目录有读写权限,避免录制失败

内容的提问来源于stack exchange,提问作者Gabit Kabylbekov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 03:36:02