Files
life-echo/api/docs/测试脚本使用说明.md
iammm0 4fa2bd6f0f docs: 更新后端文档
- 更新 api/README.md
- 更新 api/docs/本地开发环境配置.md
- 更新 api/docs/测试脚本使用说明.md

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 13:33:19 +08:00

5.4 KiB
Raw Blame History

测试脚本使用说明

概述

test_conversation.py 是一个自动化测试脚本,用于测试 Life Echo 的完整对话流程,包括:

  • 用户注册/登录
  • WebSocket 多轮对话
  • 回忆录状态检查
  • 章节生成验证

前置条件

1. 环境准备

cd api

# 安装依赖
pip install -r requirements.txt

# 确保 httpx 已安装(测试脚本需要)
pip install httpx

2. 配置文件

确保 .env 文件包含以下配置:

# LLM 配置(必需)
DEEPSEEK_API_KEY=your-api-key
DEEPSEEK_BASE_URL=https://api.deepseek.com
DEEPSEEK_MODEL=deepseek-chat

# JWT 配置(必需)
SECRET_KEY=your-secret-key
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=120

# 数据库(使用 PostgreSQL与线上一致
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/life_echo

3. 启动服务器

在一个终端窗口中启动服务器:

cd api
uvicorn main:app --reload --host 0.0.0.0 --port 8000

验证服务器运行:

curl http://localhost:8000/health
# 预期返回: {"status":"ok"}

运行测试

基本用法

在另一个终端窗口中运行:

cd api
python test_conversation.py

测试流程

脚本会自动执行以下步骤:

1. 用户注册

  • 生成随机手机号进行注册
  • 获取 JWT access_token

2. 查看初始状态

  • 调用 /api/memoir-state 获取初始回忆录状态
  • 显示当前阶段(默认 childhood

3. 多轮对话7轮

  • 建立 WebSocket 连接
  • 发送预设的对话内容(涵盖童年和教育阶段)
  • 接收 Agent 回复(支持多条消息)

4. 结束对话

  • 发送 end_conversation 消息
  • 等待对话结束确认

5. 检查结果等待60秒后台处理

  • 查看回忆录状态slots 填充情况)
  • 查看生成的章节列表
  • 显示回忆录完整内容

输出示例

============================================================
🎭 Life Echo 多轮对话测试
⏰ 开始时间: 2026-01-21 22:07:22
============================================================

📝 注册用户: 138c41775d5
✅ 注册成功!
🔑 Token: eyJhbGciOiJIUzI1NiIsInR5cCI6Ik...

📋 初始回忆录状态:
  当前阶段: childhood

🔗 连接 WebSocket: 2f83d622-6391-46fb-8caa-b7237bf9e26b
✅ 连接成功: connect

============================================================
📤 第 1 轮对话
============================================================
👤 用户: 我出生在南方一个小镇,小时候跟奶奶住在一起。
🤖 Agent: 那个小镇听起来很温馨。
🤖 Agent: 和奶奶一起住的时候,你印象最深的是什么?

... (更多对话)

============================================================
📊 检查结果
============================================================

⏳ 等待后台处理完成...
   等待中... 10秒
   等待中... 20秒
   ...

📋 回忆录状态:
  当前阶段: education
  已完成阶段: ['childhood']
  childhood 已填充: ['place', 'people', 'emotion']
    - place: 在南方一个小镇长大...
    - people: 跟奶奶关系很好...

📚 生成的章节:
  🆕 [childhood] 奶奶院子里的夏天
  🆕 [education] 第一次离开家的少年

📖 回忆录信息:
  标题: 我的回忆录
  总字数: 0
  有更新: 是

============================================================
📜 回忆录完整内容
============================================================

──────────────────────────────────────────────────────────────
【奶奶院子里的夏天】
──────────────────────────────────────────────────────────────
我出生在南方一个小镇,小时候跟奶奶住在一起。奶奶家有个小院子...

============================================================
⏰ 结束时间: 2026-01-21 22:09:30
============================================================

自定义测试内容

修改 test_conversation.py 中的 CONVERSATION_MESSAGES 列表来测试不同的对话场景:

CONVERSATION_MESSAGES = [
    # 童年阶段
    "我出生在南方一个小镇,小时候跟奶奶住在一起。",
    "奶奶家有个小院子,夏天的时候我们经常坐在院子里乘凉。",
    
    # 教育阶段
    "后来我去城里上学了,那是我第一次离开家。",
    
    # 事业阶段
    "大学毕业后我进了一家互联网公司...",
    
    # ... 添加更多对话
]

常见问题

Q: 测试超时失败?

A: 后台 LLM 调用可能较慢,请检查:

  1. 网络连接是否正常
  2. API Key 是否有效
  3. 可以增加等待时间(修改 check_results 中的等待逻辑)

Q: 章节未生成?

A: 检查以下情况:

  1. 查看服务器日志是否有错误
  2. 后台处理有 5 秒去抖延迟 + LLM 调用时间,需要等待

Q: Agent 回复包含括号注释?

A: 这是 LLM 的问题,已在 prompt 中明确禁止。如果仍然出现,可以:

  1. 检查 agents/prompts/conversation_prompts.py 中的禁止规则
  2. 考虑在后处理中过滤

相关文件

  • test_conversation.py - 测试脚本
  • docs/文字交流模式说明.md - API 接口说明
  • docs/WebSocket测试文档.md - WebSocket 详细测试文档