feat: refactor: set global mock for Redis client #21324

pull/21325/head
neatguycoding 11 months ago
parent d239c39af9
commit e81410878b

@ -2,6 +2,7 @@ import os
import pytest import pytest
from flask import Flask from flask import Flask
from unittest.mock import MagicMock, patch
# Getting the absolute path of the current file's directory # Getting the absolute path of the current file's directory
ABS_PATH = os.path.dirname(os.path.abspath(__file__)) ABS_PATH = os.path.dirname(os.path.abspath(__file__))
@ -11,6 +12,24 @@ PROJECT_DIR = os.path.abspath(os.path.join(ABS_PATH, os.pardir, os.pardir))
CACHED_APP = Flask(__name__) CACHED_APP = Flask(__name__)
# set global mock for Redis client
redis_mock = MagicMock()
redis_mock.get = MagicMock(return_value=None)
redis_mock.setex = MagicMock()
redis_mock.setnx = MagicMock()
redis_mock.delete = MagicMock()
redis_mock.lock = MagicMock()
redis_mock.exists = MagicMock(return_value=False)
redis_mock.set = MagicMock()
redis_mock.expire = MagicMock()
redis_mock.hgetall = MagicMock(return_value={})
redis_mock.hdel = MagicMock()
redis_mock.incr = MagicMock(return_value=1)
# apply the mock to the Redis client in the Flask app
redis_patcher = patch("extensions.ext_redis.redis_client", redis_mock)
redis_patcher.start()
@pytest.fixture @pytest.fixture
def app() -> Flask: def app() -> Flask:
@ -21,3 +40,20 @@ def app() -> Flask:
def _provide_app_context(app: Flask): def _provide_app_context(app: Flask):
with app.app_context(): with app.app_context():
yield yield
@pytest.fixture(autouse=True)
def reset_redis_mock():
"""在每个测试前重置 Redis mock"""
redis_mock.reset_mock()
redis_mock.get.return_value = None
redis_mock.setex.return_value = None
redis_mock.setnx.return_value = None
redis_mock.delete.return_value = None
redis_mock.exists.return_value = False
redis_mock.set.return_value = None
redis_mock.expire.return_value = None
redis_mock.hgetall.return_value = {}
redis_mock.hdel.return_value = None
redis_mock.incr.return_value = 1
yield

@ -6,18 +6,12 @@ from unittest.mock import MagicMock, Mock, call, patch
import pytest import pytest
redis_mock = MagicMock() # 从 conftest.py 导入全局的 redis_mock
redis_mock.get = Mock(return_value=None) from tests.unit_tests.conftest import redis_mock
redis_mock.setex = Mock()
redis_mock.setnx = Mock() from models.dataset import Dataset, Document
redis_mock.delete = Mock() from services.dataset_service import DocumentService
redis_mock.lock = Mock() from services.errors.document import DocumentIndexingError
# Mock Redis client to avoid initialization issues during import
with patch("extensions.ext_redis.redis_client", redis_mock):
from models.dataset import Dataset, Document
from services.dataset_service import DocumentService
from services.errors.document import DocumentIndexingError
class TestDatasetServiceBatchUpdateDocumentStatus(unittest.TestCase): class TestDatasetServiceBatchUpdateDocumentStatus(unittest.TestCase):

Loading…
Cancel
Save