test: format test suite

This commit is contained in:
huanghuoguoguo
2026-06-16 11:13:05 +08:00
parent 1ae5aacc00
commit ff0c5a6f0a
92 changed files with 1658 additions and 1713 deletions
+46 -14
View File
@@ -39,6 +39,7 @@ class TestVectorDatabaseAbstractMethods:
def test_abstract_methods_required(self):
"""Subclass must implement all abstract methods."""
class IncompleteVectorDB(VectorDatabase):
pass
@@ -47,11 +48,21 @@ class TestVectorDatabaseAbstractMethods:
def test_supported_search_types_default(self):
"""Default supported_search_types returns [VECTOR]."""
class MinimalVectorDB(VectorDatabase):
async def add_embeddings(self, collection, ids, embeddings_list, metadatas, documents=None):
pass
async def search(self, collection, query_embedding, k=5, search_type='vector', query_text='', filter=None, vector_weight=None):
async def search(
self,
collection,
query_embedding,
k=5,
search_type='vector',
query_text='',
filter=None,
vector_weight=None,
):
pass
async def delete_by_file_id(self, collection, file_id):
@@ -71,11 +82,21 @@ class TestVectorDatabaseAbstractMethods:
def test_list_by_filter_default_implementation(self):
"""list_by_filter has default implementation returning empty."""
class MinimalVectorDB(VectorDatabase):
async def add_embeddings(self, collection, ids, embeddings_list, metadatas, documents=None):
pass
async def search(self, collection, query_embedding, k=5, search_type='vector', query_text='', filter=None, vector_weight=None):
async def search(
self,
collection,
query_embedding,
k=5,
search_type='vector',
query_text='',
filter=None,
vector_weight=None,
):
pass
async def delete_by_file_id(self, collection, file_id):
@@ -93,9 +114,8 @@ class TestVectorDatabaseAbstractMethods:
db = MinimalVectorDB()
# list_by_filter should return empty list and -1 for total
import asyncio
result = asyncio.get_event_loop().run_until_complete(
db.list_by_filter('test_collection')
)
result = asyncio.get_event_loop().run_until_complete(db.list_by_filter('test_collection'))
assert result == ([], -1)
@@ -105,14 +125,17 @@ class TestVectorDatabaseInterface:
@pytest.fixture
def mock_vector_db(self):
"""Create a minimal mock VectorDatabase for testing."""
class MockVectorDB(VectorDatabase):
def __init__(self):
self.add_embeddings = AsyncMock()
self.search = AsyncMock(return_value={
'ids': [['id1', 'id2']],
'distances': [[0.1, 0.2]],
'metadatas': [[{'key': 'val1'}, {'key': 'val2'}]]
})
self.search = AsyncMock(
return_value={
'ids': [['id1', 'id2']],
'distances': [[0.1, 0.2]],
'metadatas': [[{'key': 'val1'}, {'key': 'val2'}]],
}
)
self.delete_by_file_id = AsyncMock()
self.delete_by_filter = AsyncMock(return_value=5)
self.get_or_create_collection = AsyncMock()
@@ -121,7 +144,16 @@ class TestVectorDatabaseInterface:
async def add_embeddings(self, collection, ids, embeddings_list, metadatas, documents=None):
pass
async def search(self, collection, query_embedding, k=5, search_type='vector', query_text='', filter=None, vector_weight=None):
async def search(
self,
collection,
query_embedding,
k=5,
search_type='vector',
query_text='',
filter=None,
vector_weight=None,
):
pass
async def delete_by_file_id(self, collection, file_id):
@@ -146,7 +178,7 @@ class TestVectorDatabaseInterface:
ids=['id1', 'id2'],
embeddings_list=[[0.1, 0.2], [0.3, 0.4]],
metadatas=[{'a': 1}, {'b': 2}],
documents=['doc1', 'doc2']
documents=['doc1', 'doc2'],
)
mock_vector_db.add_embeddings.assert_called_once()
@@ -162,7 +194,7 @@ class TestVectorDatabaseInterface:
search_type='hybrid',
query_text='search text',
filter={'file_id': 'abc'},
vector_weight=0.7
vector_weight=0.7,
)
mock_vector_db.search.assert_called_once()
@@ -170,4 +202,4 @@ class TestVectorDatabaseInterface:
async def test_delete_by_filter_returns_int(self, mock_vector_db):
"""delete_by_filter returns int count."""
result = await mock_vector_db.delete_by_filter('test', {'file_id': 'abc'})
assert isinstance(result, int)
assert isinstance(result, int)