AI4SE_Practices/AI4SE-survey/test-standards/test-tasks/task1-api.md

3.5 KiB
Raw Blame History

Task 1: RESTful API开发基础任务

任务描述

使用Python + FastAPI开发一个用户管理系统的RESTful API包含以下功能

  1. 用户注册接口 (POST /api/users/register)

    • 接收用户名、邮箱、密码
    • 验证输入格式(邮箱格式、密码强度)
    • 检查用户名和邮箱是否已存在
    • 返回用户信息(不含密码)
  2. 用户登录接口 (POST /api/users/login)

    • 接收用户名/邮箱和密码
    • 验证用户凭证
    • 返回JWT Token
  3. 用户查询接口 (GET /api/users/{user_id})

    • 需要JWT认证
    • 返回指定用户的公开信息

技术要求

  • 使用FastAPI框架
  • 实现数据校验Pydantic模型
  • 实现错误处理(统一的错误响应格式)
  • 使用SQLite数据库存储用户数据
  • 实现密码加密bcrypt
  • 实现JWT认证
  • 代码符合PEP8规范
  • 提供API文档FastAPI自动生成

初始条件

  • 初始代码状态:无,从零开始
  • 项目类型Python Web API项目
  • 框架FastAPI 0.103.1+
  • Python版本3.10+
  • 数据库SQLite无需额外配置

验收标准

功能验收

  • 用户注册接口功能完整,数据校验正确
  • 用户登录接口功能完整,认证正确
  • 用户查询接口功能完整,权限验证正确
  • 密码加密存储,未明文保存
  • JWT Token生成和验证正确
  • 错误处理统一,返回格式规范

代码质量

  • 代码符合PEP8规范
  • 代码结构清晰,函数职责单一
  • 注释充分,关键逻辑有说明
  • 无明显的安全漏洞

测试验收

  • 使用Postman或curl可以成功调用所有接口
  • 所有接口的边界条件处理正确重复注册、错误密码、无效Token等
  • 错误响应格式统一且信息明确

测试步骤

  1. 创建项目结构

    • 创建Python虚拟环境
    • 安装依赖FastAPI、uvicorn、pydantic、bcrypt、python-jose等
    • 创建项目目录结构
  2. 开发API接口

    • 使用工具生成/辅助编写代码
    • 记录工具生成的代码
    • 记录人工修改的点和原因
  3. 测试验证

    • 使用Postman测试所有接口
    • 验证功能正确性
    • 记录测试结果

评估要点

代码生成质量

  • 完整性:是否生成了所有必需的接口和功能
  • 正确性:生成的代码是否能直接运行,是否需要大量修改
  • 规范性代码是否符合PEP8和FastAPI最佳实践
  • 安全性是否正确实现密码加密和JWT认证

工具使用体验

  • 响应速度:工具生成代码的速度
  • 交互便利性:需要多少次交互才能生成完整功能
  • 错误处理:工具是否能处理边界情况和错误场景

示例代码结构

期望生成的项目结构:

user-api/
├── main.py              # FastAPI应用入口
├── models.py            # Pydantic数据模型
├── database.py          # 数据库配置和连接
├── auth.py              # JWT认证逻辑
├── routers/
│   └── users.py         # 用户相关路由
├── requirements.txt     # 依赖清单
└── README.md           # 项目说明

参考示例

依赖清单示例

fastapi==0.103.1
uvicorn[standard]==0.24.0
pydantic==2.4.2
pydantic[email]==2.4.2
bcrypt==4.0.1
python-jose[cryptography]==3.3.0
sqlalchemy==2.0.23

注意:这是一个基础任务,所有工具都必须完成此任务的测试。测试结果将作为对比评估的重要依据。