From abfb83e2c36017d0d2192a5544f39f6f7d0e0714 Mon Sep 17 00:00:00 2001 From: CI Bot Date: Tue, 14 Jul 2026 22:10:36 +0800 Subject: [PATCH] =?UTF-8?q?fix(test):=20=E4=BF=AE=E5=A4=8Dtts=5Fsegment=5F?= =?UTF-8?q?synthesis=E5=8D=95=E6=B5=8Bmock=E8=B7=AF=E5=BE=84=EF=BC=8C?= =?UTF-8?q?=E9=80=82=E9=85=8Daudio=5Fmerger=E4=B8=8B=E6=B2=89run=5Fffmpeg?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/unit/test_tts_segment_synthesis.py | 30 ++++++++++++++---------- 1 file changed, 18 insertions(+), 12 deletions(-) mode change 100644 => 100755 tests/unit/test_tts_segment_synthesis.py diff --git a/tests/unit/test_tts_segment_synthesis.py b/tests/unit/test_tts_segment_synthesis.py old mode 100644 new mode 100755 index 583b3a2ba..0018c711b --- a/tests/unit/test_tts_segment_synthesis.py +++ b/tests/unit/test_tts_segment_synthesis.py @@ -107,10 +107,11 @@ class TestAudioMerger: finally: os.unlink(path) - @patch("packages.application.tts_job.audio_merger.subprocess.run") - def test_ffmpeg_called_correctly(self, mock_run: MagicMock) -> None: - """多文件调用 FFmpeg concat。""" - mock_run.return_value = MagicMock(returncode=0) + @patch("packages.application.tts_job.audio_merger.run_ffmpeg") + def test_ffmpeg_called_correctly(self, mock_run_ffmpeg: MagicMock) -> None: + """多文件调用 FFmpeg concat(通过 run_ffmpeg 统一入口)。""" + # run_ffmpeg 成功返回 (stdout, stderr) + mock_run_ffmpeg.return_value = ("", "") # 创建临时文件 paths = [] @@ -130,20 +131,24 @@ class TestAudioMerger: except (FileNotFoundError, OSError): pass # Expected since we're mocking - # 验证 FFmpeg 被调用 - mock_run.assert_called_once() - cmd = mock_run.call_args[0][0] - assert cmd[0] == "ffmpeg" + # 验证 run_ffmpeg 被调用 + mock_run_ffmpeg.assert_called_once() + cmd = mock_run_ffmpeg.call_args[0][0] + from shared.ffmpeg_utils import FFMPEG_BIN + + assert cmd[0] == FFMPEG_BIN assert "-f" in cmd assert "concat" in cmd finally: for p in paths: os.unlink(p) - @patch("packages.application.tts_job.audio_merger.subprocess.run") - def test_ffmpeg_failure_raises(self, mock_run: MagicMock) -> None: - """FFmpeg 失败抛出 AudioMergeError。""" - mock_run.return_value = MagicMock(returncode=1, stderr="error details") + @patch("packages.application.tts_job.audio_merger.run_ffmpeg") + def test_ffmpeg_failure_raises(self, mock_run_ffmpeg: MagicMock) -> None: + """FFmpeg 失败抛出 AudioMergeError(通过 run_ffmpeg 抛出 CalledProcessError)。""" + from subprocess import CalledProcessError + + mock_run_ffmpeg.side_effect = CalledProcessError(returncode=1, cmd=["ffmpeg"], stderr="error details") paths = [] for i in range(2): @@ -155,6 +160,7 @@ class TestAudioMerger: merger = AudioMerger() with pytest.raises(AudioMergeError, match="FFmpeg 合并失败"): merger.merge(paths) + mock_run_ffmpeg.assert_called_once() finally: for p in paths: os.unlink(p)