fix(test): 修复tts_segment_synthesis单测mock路径,适配audio_merger下沉run_ffmpeg
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 1529h15m59s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 1529h15m59s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 1529h16m0s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 1529h16m0s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 1529h16m2s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 1529h16m1s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 1529h16m2s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 1529h16m3s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 1529h47m42s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 1529h47m41s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 1529h47m40s
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 1529h15m59s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 1529h15m59s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 1529h16m0s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 1529h16m0s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 1529h16m2s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 1529h16m1s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 1529h16m2s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 1529h16m3s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 1529h47m42s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 1529h47m41s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 1529h47m40s
This commit is contained in:
Regular → Executable
+18
-12
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user