test(tasks): Add tests for log_task_failure signal handler (#35721)

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
Elizabeth Thompson
2025-10-20 09:23:18 -07:00
committed by GitHub
parent d089a96163
commit 1b6d57c3f3

View File

@@ -16,7 +16,7 @@
# under the License.
from random import randint
from unittest.mock import patch
from unittest.mock import MagicMock, patch
import pytest
from flask_appbuilder.security.sqla.models import User
@@ -25,7 +25,7 @@ from freezegun.api import FakeDatetime
from superset.extensions import db
from superset.reports.models import ReportScheduleType
from superset.tasks.scheduler import execute, scheduler
from superset.tasks.scheduler import execute, log_task_failure, scheduler
from tests.integration_tests.reports.utils import insert_report_schedule
from tests.integration_tests.test_app import app
@@ -201,3 +201,48 @@ def test_execute_task_with_command_exception(
db.session.delete(report_schedule)
db.session.commit()
@patch("superset.tasks.scheduler.logger")
def test_log_task_failure_with_sender(logger_mock):
"""
Test that log_task_failure logs correctly when sender is provided
"""
mock_task = MagicMock()
mock_task.name = "test.task.name"
mock_exception = Exception("Test error")
mock_einfo = MagicMock()
log_task_failure(
sender=mock_task,
task_id="test-task-id",
exception=mock_exception,
einfo=mock_einfo,
)
logger_mock.exception.assert_called_once_with(
"Celery task %s failed: %s",
"test.task.name",
mock_exception,
exc_info=mock_einfo,
)
@patch("superset.tasks.scheduler.logger")
def test_log_task_failure_without_sender(logger_mock):
"""
Test that log_task_failure logs correctly when sender is None
"""
mock_exception = Exception("Test error")
mock_einfo = MagicMock()
log_task_failure(
sender=None,
task_id="test-task-id",
exception=mock_exception,
einfo=mock_einfo,
)
logger_mock.exception.assert_called_once_with(
"Celery task %s failed: %s", "Unknown", mock_exception, exc_info=mock_einfo
)