如何将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
相关产品推荐
相关产品推荐

