Files
ai_baijiahao/test_database.py

91 lines
2.8 KiB
Python
Raw Permalink Normal View History

# -*- coding: utf-8 -*-
"""
测试 SQLite 数据库迁移和功能
"""
import os
import sys
from database import get_database, migrate_from_json
from task_queue import get_task_queue, TaskStatus
def test_database():
"""测试数据库功能"""
print("=" * 60)
print("开始测试 SQLite 数据库功能")
print("=" * 60)
# 1. 测试数据库初始化
print("\n1. 测试数据库初始化...")
db = get_database()
print(f"✓ 数据库初始化成功: {db.db_path}")
# 2. 测试从 JSON 迁移数据
print("\n2. 测试数据迁移...")
json_file = "data/task_queue.json"
if os.path.exists(json_file):
count = migrate_from_json(json_file)
print(f"✓ 迁移了 {count} 个任务")
else:
print("! 未找到旧 JSON 文件,跳过迁移")
# 3. 测试任务队列功能
print("\n3. 测试任务队列功能...")
queue = get_task_queue()
# 3.1 添加测试任务
print("\n3.1 添加测试任务...")
task_id = queue.add_task(
url="https://baijiahao.baidu.com/u?app_id=test123",
months=3,
use_proxy=True,
username="test_user"
)
print(f"✓ 添加任务成功: {task_id}")
# 3.2 获取任务
print("\n3.2 获取任务...")
task = queue.get_task(task_id)
if task:
print(f"✓ 获取任务成功:")
print(f" - URL: {task['url']}")
print(f" - 状态: {task['status']}")
print(f" - 创建时间: {task['created_at']}")
# 3.3 更新任务状态
print("\n3.3 更新任务状态...")
queue.update_task_status(task_id, TaskStatus.PROCESSING)
task = queue.get_task(task_id)
print(f"✓ 更新状态成功: {task['status']}")
# 3.4 更新任务进度
print("\n3.4 更新任务进度...")
queue.update_task_progress(task_id, 50, "正在处理中...", 25)
task = queue.get_task(task_id)
print(f"✓ 更新进度成功: {task['progress']}%")
# 3.5 获取队列统计
print("\n3.5 获取队列统计...")
stats = queue.get_queue_stats()
print(f"✓ 队列统计:")
print(f" - 总任务数: {stats['total']}")
print(f" - 等待中: {stats['pending']}")
print(f" - 处理中: {stats['processing']}")
print(f" - 已完成: {stats['completed']}")
print(f" - 失败: {stats['failed']}")
# 3.6 获取所有任务
print("\n3.6 获取所有任务...")
all_tasks = queue.get_all_tasks()
print(f"✓ 获取所有任务成功,共 {len(all_tasks)} 个任务")
# 3.7 删除测试任务
print("\n3.7 删除测试任务...")
queue.delete_task(task_id)
print(f"✓ 删除任务成功: {task_id}")
print("\n" + "=" * 60)
print("所有测试通过SQLite 数据库运行正常")
print("=" * 60)
if __name__ == "__main__":
test_database()