Files
SillyTavern_replica/test_worldbook_pagination.py
2026-05-01 15:44:14 +08:00

126 lines
5.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
测试世界书分页功能
"""
import sys
import os
from pathlib import Path
import json
# 添加backend目录到Python路径
backend_dir = Path(__file__).parent / "backend"
sys.path.insert(0, str(backend_dir))
# 直接导入需要的模块避免导入整个services包
from core.config import settings
from services.worldbook_service import WorldBookService
def test_pagination():
"""测试世界书条目分页功能"""
# 测试数据:世界书名称
test_worldbook_name = "测试分页世界书"
print("=" * 60)
print("测试世界书分页功能")
print("=" * 60)
try:
# 1. 创建测试世界书
print("\n1. 创建测试世界书...")
try:
worldbook = WorldBookService.create_worldbook(test_worldbook_name, "用于测试分页功能")
print(f" ✓ 世界书创建成功: {worldbook['name']}")
except ValueError as e:
if "already exists" in str(e):
print(f" 世界书已存在,跳过创建")
else:
raise
# 2. 添加测试条目创建30个条目
print("\n2. 添加测试条目...")
num_entries = 30
for i in range(num_entries):
entry_data = {
"key": [f"关键词{i}"],
"content": f"这是第{i+1}个测试条目的内容",
"comment": f"测试条目 {i+1}",
"order": i + 1
}
WorldBookService.create_entry(test_worldbook_name, entry_data)
print(f" ✓ 成功添加 {num_entries} 个条目")
# 3. 测试分页功能
print("\n3. 测试分页功能...")
# 测试第1页每页10条
print("\n 测试第1页每页10条:")
result = WorldBookService.list_entries(test_worldbook_name, page=1, page_size=10)
print(f" - 总条目数: {result['total']}")
print(f" - 当前页: {result['page']}")
print(f" - 每页数量: {result['page_size']}")
print(f" - 总页数: {result['total_pages']}")
print(f" - 返回条目数: {len(result['entries'])}")
assert result['total'] == num_entries, f"总条目数错误: {result['total']} != {num_entries}"
assert result['page'] == 1, f"页码错误: {result['page']} != 1"
assert result['page_size'] == 10, f"每页数量错误: {result['page_size']} != 10"
assert result['total_pages'] == 3, f"总页数错误: {result['total_pages']} != 3"
assert len(result['entries']) == 10, f"返回条目数错误: {len(result['entries'])} != 10"
print(" ✓ 第1页测试通过")
# 测试第2页
print("\n 测试第2页每页10条:")
result = WorldBookService.list_entries(test_worldbook_name, page=2, page_size=10)
print(f" - 当前页: {result['page']}")
print(f" - 返回条目数: {len(result['entries'])}")
assert result['page'] == 2, f"页码错误: {result['page']} != 2"
assert len(result['entries']) == 10, f"返回条目数错误: {len(result['entries'])} != 10"
print(" ✓ 第2页测试通过")
# 测试第3页最后一页应该只有10条
print("\n 测试第3页每页10条:")
result = WorldBookService.list_entries(test_worldbook_name, page=3, page_size=10)
print(f" - 当前页: {result['page']}")
print(f" - 返回条目数: {len(result['entries'])}")
assert result['page'] == 3, f"页码错误: {result['page']} != 3"
assert len(result['entries']) == 10, f"返回条目数错误: {len(result['entries'])} != 10"
print(" ✓ 第3页测试通过")
# 测试不同的每页数量
print("\n 测试每页20条:")
result = WorldBookService.list_entries(test_worldbook_name, page=1, page_size=20)
print(f" - 总页数: {result['total_pages']}")
print(f" - 返回条目数: {len(result['entries'])}")
assert result['page_size'] == 20, f"每页数量错误: {result['page_size']} != 20"
assert result['total_pages'] == 2, f"总页数错误: {result['total_pages']} != 2"
assert len(result['entries']) == 20, f"返回条目数错误: {len(result['entries'])} != 20"
print(" ✓ 每页20条测试通过")
print("\n" + "=" * 60)
print("✅ 所有分页测试通过!")
print("=" * 60)
# 4. 清理测试数据
print("\n4. 清理测试数据...")
WorldBookService.delete_worldbook(test_worldbook_name)
print(" ✓ 测试世界书已删除")
return True
except Exception as e:
print(f"\n❌ 测试失败: {str(e)}")
import traceback
traceback.print_exc()
# 尝试清理测试数据
try:
WorldBookService.delete_worldbook(test_worldbook_name)
print(" ✓ 测试数据已清理")
except:
pass
return False
if __name__ == "__main__":
success = test_pagination()
sys.exit(0 if success else 1)