diff --git a/tests/unit/test_voice_clone_task.py b/tests/unit/test_voice_clone_task.py index 11525a8a9..5126857a8 100644 --- a/tests/unit/test_voice_clone_task.py +++ b/tests/unit/test_voice_clone_task.py @@ -63,9 +63,7 @@ class TestProcessVoiceCloneSuccess: @patch("worker_app.tasks.voice_clone.VoiceCloneWorkflowService") @patch("worker_app.tasks.voice_clone.SQLAlchemyVoiceCloneProfileRepository") - def test_process_voice_clone_success( - self, mock_repo_cls: MagicMock, mock_workflow_cls: MagicMock - ) -> None: + def test_process_voice_clone_success(self, mock_repo_cls: MagicMock, mock_workflow_cls: MagicMock) -> None: """克隆成功:轮询返回 voice_id,profile 标记为 ready。""" mock_session = MagicMock() mock_repo = MagicMock() @@ -97,9 +95,7 @@ class TestProcessVoiceCloneSuccess: assert result["ok"] is True assert result["voice_id"] == "voice-xyz" - mock_workflow.poll_and_process_clone.assert_called_once_with( - "profile-123", timeout=300 - ) + mock_workflow.poll_and_process_clone.assert_called_once_with("profile-123", timeout=300) mock_session.commit.assert_called_once() mock_session.close.assert_called_once() @@ -134,9 +130,7 @@ class TestProcessVoiceCloneTimeout: @patch("worker_app.tasks.voice_clone.VoiceCloneWorkflowService") @patch("worker_app.tasks.voice_clone.SQLAlchemyVoiceCloneProfileRepository") - def test_process_voice_clone_timeout_retries( - self, mock_repo_cls: MagicMock, mock_workflow_cls: MagicMock - ) -> None: + def test_process_voice_clone_timeout_retries(self, mock_repo_cls: MagicMock, mock_workflow_cls: MagicMock) -> None: """超时时调用 self.retry() 进行重试,Retry 异常向上传播。""" mock_session = MagicMock() mock_repo = MagicMock() @@ -146,9 +140,7 @@ class TestProcessVoiceCloneTimeout: mock_repo.get.return_value = profile mock_repo_cls.return_value = mock_repo - mock_workflow.poll_and_process_clone.side_effect = CosyVoiceTimeoutError( - "任务超时" - ) + mock_workflow.poll_and_process_clone.side_effect = CosyVoiceTimeoutError("任务超时") mock_workflow_cls.return_value = mock_workflow _mock_db_module.SessionLocal.return_value = mock_session @@ -175,9 +167,7 @@ class TestProcessVoiceCloneFailure: @patch("worker_app.tasks.voice_clone.VoiceCloneWorkflowService") @patch("worker_app.tasks.voice_clone.SQLAlchemyVoiceCloneProfileRepository") - def test_process_voice_clone_cosyvoice_error( - self, mock_repo_cls: MagicMock, mock_workflow_cls: MagicMock - ) -> None: + def test_process_voice_clone_cosyvoice_error(self, mock_repo_cls: MagicMock, mock_workflow_cls: MagicMock) -> None: """CosyVoice 错误:profile 标记为 failed。""" mock_session = MagicMock() mock_repo = MagicMock() @@ -204,9 +194,7 @@ class TestProcessVoiceCloneFailure: @patch("worker_app.tasks.voice_clone.VoiceCloneWorkflowService") @patch("worker_app.tasks.voice_clone.SQLAlchemyVoiceCloneProfileRepository") - def test_process_voice_clone_unexpected_error( - self, mock_repo_cls: MagicMock, mock_workflow_cls: MagicMock - ) -> None: + def test_process_voice_clone_unexpected_error(self, mock_repo_cls: MagicMock, mock_workflow_cls: MagicMock) -> None: """意外异常:profile 标记为 failed。""" mock_session = MagicMock() mock_repo = MagicMock() @@ -233,9 +221,7 @@ class TestProcessVoiceCloneFailure: @patch("worker_app.tasks.voice_clone.VoiceCloneWorkflowService") @patch("worker_app.tasks.voice_clone.SQLAlchemyVoiceCloneProfileRepository") - def test_process_voice_clone_no_task_id( - self, mock_repo_cls: MagicMock, mock_workflow_cls: MagicMock - ) -> None: + def test_process_voice_clone_no_task_id(self, mock_repo_cls: MagicMock, mock_workflow_cls: MagicMock) -> None: """metadata 中没有 cosyvoice_task_id 时返回 failed。""" mock_session = MagicMock() mock_repo = MagicMock() @@ -248,9 +234,7 @@ class TestProcessVoiceCloneFailure: mock_repo_cls.return_value = mock_repo # workflow 对缺少 task_id 的 profile 抛出 CosyVoiceError - mock_workflow.poll_and_process_clone.side_effect = CosyVoiceError( - "missing task_id" - ) + mock_workflow.poll_and_process_clone.side_effect = CosyVoiceError("missing task_id") mock_workflow_cls.return_value = mock_workflow _mock_db_module.SessionLocal.return_value = mock_session