feat: 提交热榜评论分析工具 MVP 基线
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
from fastapi.testclient import TestClient
|
||||
from sqlalchemy import create_engine, select
|
||||
from sqlalchemy.orm import Session, sessionmaker
|
||||
from sqlalchemy.pool import StaticPool
|
||||
|
||||
from app.db import Base
|
||||
from app.main import app
|
||||
from app.models import Task
|
||||
|
||||
|
||||
def test_lifespan_marks_running_tasks_failed_after_restart(monkeypatch):
|
||||
engine = create_engine(
|
||||
"sqlite:///:memory:",
|
||||
connect_args={"check_same_thread": False},
|
||||
poolclass=StaticPool,
|
||||
)
|
||||
TestingSessionLocal = sessionmaker(bind=engine, autoflush=False, autocommit=False)
|
||||
Base.metadata.create_all(engine)
|
||||
|
||||
with TestingSessionLocal() as session:
|
||||
session.add(Task(platform="xiaohongshu", status="running"))
|
||||
session.commit()
|
||||
|
||||
monkeypatch.setattr("app.main.SessionLocal", TestingSessionLocal, raising=False)
|
||||
monkeypatch.setattr("app.main.init_db", lambda: None)
|
||||
|
||||
try:
|
||||
with TestClient(app):
|
||||
pass
|
||||
|
||||
with Session(engine) as session:
|
||||
task = session.scalar(select(Task))
|
||||
|
||||
assert task is not None
|
||||
assert task.status == "failed"
|
||||
assert task.error_stage == "system"
|
||||
assert task.error_type == "unexpected_restart"
|
||||
assert task.error_message == "系统重启,任务被中断"
|
||||
finally:
|
||||
engine.dispose()
|
||||
Reference in New Issue
Block a user