# api接口测试 **Repository Path**: liuxnstandy57/api-interface-testing ## Basic Information - **Project Name**: api接口测试 - **Description**: API自动化测试框架--demo 基于 FastAPI + pytest 的企业级 API 自动化测试解决方案 - **Primary Language**: Python - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-08-26 - **Last Updated**: 2025-09-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: Python, 接口测试 ## README # 🚀 API 自动化测试框架 > 基于 FastAPI + pytest 的企业级 API 自动化测试解决方案 [![Python](https://img.shields.io/badge/Python-3.8+-blue.svg)](https://python.org) [![FastAPI](https://img.shields.io/badge/FastAPI-0.104+-green.svg)](https://fastapi.tiangolo.com) [![pytest](https://img.shields.io/badge/pytest-7.4+-orange.svg)](https://pytest.org) [![Allure](https://img.shields.io/badge/Allure-2.24+-purple.svg)](https://docs.qameta.io/allure/) [![Docker](https://img.shields.io/badge/Docker-Ready-blue.svg)](https://docker.com) ## ✨ 项目亮点 ### 🎯 **完整的API服务** - 🔥 用户管理CRUD操作 - 📚 自动生成API文档(Swagger UI & ReDoc) - ✅ 数据验证和错误处理 - 🌐 CORS跨域支持 - ❤️ 健康检查接口 ### 🧪 **企业级测试框架** - 🚀 pytest + requests/httpx 测试栈 - 📊 Allure 可视化测试报告 - ⚡ 性能压力测试(Locust) - 📋 Excel数据驱动测试,支持自动生成唯一测试数据 - 🌐 完整中文支持,包括测试用例名称和数据 - 🎯 多维度测试覆盖 - 🔄 CI/CD 集成支持 ### 🏗️ **现代化架构** - 📦 模块化项目结构 - ⚙️ 灵活的配置管理 - 📝 完善的日志系统 - 🐳 Docker 容器化支持 - 🔧 开发工具链集成 ## 🌟 核心特性 - 🚀 **现代化架构**:基于 FastAPI + SQLAlchemy + Alembic 的现代化 API 架构 - 🔧 **完整测试体系**:集成 pytest + Allure 的全方位测试解决方案 - 📊 **Excel数据驱动**:支持 Excel 文件驱动的参数化测试,自动生成唯一测试数据 - 🌐 **中文全支持**:完整支持中文测试用例和数据,Unicode字符正常显示 - 🎯 **智能断言**:多维度响应验证,包括状态码、数据结构、业务逻辑 - 🔄 **CI/CD 就绪**:完整的持续集成配置和部署脚本 - 📈 **性能监控**:内置性能测试和监控指标 - 🐳 **容器化部署**:Docker 一键部署,支持多环境配置 - 📝 **完整文档**:详细的 API 文档和测试指南 ## 📁 项目架构 ``` APItest/ ├── 🚀 app/ # FastAPI 应用核心 │ ├── main.py # 应用入口 │ ├── core/config.py # 核心配置 │ ├── api/v1/ # API 路由 │ ├── models/ # 数据模型 │ └── services/ # 业务逻辑 ├── 🧪 tests/ # 测试套件 │ ├── test_api.py # API 测试 │ ├── test_llm_api.py # LLM API 测试 │ ├── data/ # 测试数据 │ │ ├── test_cases.xlsx # Excel测试用例 │ │ └── generate_excel_testdata.py # 测试数据生成器 │ ├── performance/ # 性能测试 │ └── utils/ # 测试工具 │ └── excel_reader.py # Excel数据读取器 ├── ⚙️ config/ # 环境配置 │ ├── development.yaml # 开发环境 │ └── production.yaml # 生产环境 ├── 🛠️ utils/ # 通用工具 │ ├── logger.py # 日志管理 │ ├── config_manager.py # 配置管理 │ └── helpers.py # 辅助函数 ├── 📚 docs/ # 项目文档 ├── 🐳 Docker 支持 │ ├── Dockerfile # 镜像配置 │ └── docker-compose.yml # 服务编排 └── 📋 配置文件 ├── requirements.txt # 依赖管理 ├── pytest.ini # 测试配置 ├── Makefile # 命令集合 └── .env.example # 环境模板 ``` ## 🚀 快速开始 ### 📋 环境要求 | 组件 | 版本要求 | 说明 | |------|----------|------| | **Python** | 3.8+ | 推荐 3.11+ | | **内存** | 4GB+ | 建议配置 | | **磁盘** | 1GB+ | 可用空间 | ### 📤 代码上传到Gitee 本项目提供了便捷的代码上传脚本,可以快速将项目上传到Gitee仓库。 #### 🔧 准备工作 1. **安装Git**:确保系统已安装Git并配置用户信息 ```bash git config --global user.name "Your Name" git config --global user.email "your.email@example.com" ``` 2. **创建Gitee仓库**:在[Gitee](https://gitee.com)上创建一个新的空仓库 3. **配置仓库地址**:修改 `upload_to_gitee.py` 中的仓库地址 ```python GITEE_REPO_URL = "https://gitee.com/your_username/your_repo_name.git" ``` #### 🚀 一键上传 **方式一:使用Python脚本** ```bash python upload_to_gitee.py ``` **方式二:使用批处理文件(Windows)** ```bash # 双击运行或在命令行执行 upload_to_gitee.bat ``` #### ✨ 脚本功能 - 🔍 **环境检查**:自动检查Git和Python环境 - 🏗️ **仓库初始化**:自动初始化Git仓库 - 📁 **文件管理**:智能添加项目文件(排除临时文件) - 🚀 **自动推送**:一键提交并推送到Gitee - 📊 **进度显示**:详细的操作进度和结果反馈 #### 📝 注意事项 - 确保Gitee仓库为空仓库或新建仓库 - 脚本会自动排除 `.gitignore` 中定义的文件 - 首次推送可能需要输入Gitee用户名和密码 - 建议使用SSH密钥或访问令牌进行身份验证 ### ⚡ 一键启动 ```bash # 1️⃣ 克隆项目 git clone https://gitee.com/liuxnstandy57/api-interface-testing.git cd APItest # 2️⃣ 安装依赖 python -m venv .venv .venv\Scripts\activate # Windows # source .venv/bin/activate # Linux/macOS pip install -r requirements.txt # 3️⃣ 配置环境 cp .env.example .env # 4️⃣ 启动服务 make run # 或者: uvicorn app.main:app --reload ``` ### 🐳 Docker 快速启动 ```bash # 一键启动所有服务 docker-compose up -d # 查看服务状态 docker-compose ps ``` ### 📚 访问服务 启动成功后,访问以下地址: | 服务 | 地址 | 描述 | |------|------|------| | 🎯 **API 文档** | http://localhost:8000/docs | Swagger UI | | 📖 **ReDoc** | http://localhost:8000/redoc | API 文档 | | ❤️ **健康检查** | http://localhost:8000/api/v1/health | 服务状态 | | 📊 **测试报告** | http://localhost:4040 | Allure 报告 | ## 🧪 测试指南 ### 🎯 测试类型 | 测试类型 | 描述 | 命令 | |----------|------|------| | 🔧 **单元测试** | 独立函数和类测试 | `make test-unit` | | 🔗 **集成测试** | 组件交互测试 | `make test-integration` | | 🌐 **API测试** | REST API 接口测试 | `make test-api` | | 📋 **Excel数据驱动测试** | 基于Excel文件的数据驱动测试 | `pytest tests/test_api.py::TestExcelDataDriven -v` | | ⚡ **性能测试** | 负载和压力测试 | `make test-performance` | | 🔄 **回归测试** | 功能完整性测试 | `make test` | ### ⚡ 快速测试 ```bash # 🚀 运行所有测试 make test # 📋 体验Excel数据驱动测试 python tests/data/generate_excel_testdata.py # 生成测试数据 pytest tests/test_api.py::TestExcelDataDriven -v # 运行Excel测试 # 📊 生成测试报告 make allure-report # 📈 查看覆盖率 make test-coverage # 🔍 代码质量检查 make lint ``` ### 🎯 精准测试 ```bash # 运行指定文件 pytest tests/test_api.py -v # 运行指定测试 pytest tests/test_api.py::test_create_user -v # 运行Excel数据驱动测试 pytest tests/test_api.py::TestExcelDataDriven -v # 运行特定Excel测试方法 pytest tests/test_api.py::TestExcelDataDriven::test_create_user_from_excel -v # 并行执行 pytest -n auto # 只运行失败的测试 pytest --lf ``` ### 📊 Allure 测试报告 #### 🚀 快速开始 ```bash # 安装 Allure npm install -g allure-commandline # 运行测试并生成报告 make test make allure-report # 启动报告服务 make allure-serve ``` #### ✨ 报告特性 - 📈 **测试概览**: 通过率、失败率统计 - 🔍 **详细分析**: 执行步骤和错误追踪 - 📊 **趋势图表**: 历史测试数据对比 - 🏷️ **智能分类**: 按功能模块自动分组 - 📎 **附件支持**: 日志、截图自动关联 ### 使用 pytest 直接运行 ```bash # 运行所有测试 pytest tests/ -v # 运行特定测试文件 pytest tests/test_api.py -v # 运行特定测试用例 pytest tests/test_api.py::TestUserAPI::test_create_user -v # 并行运行测试 pytest -n auto # 只运行失败的测试 pytest --lf # 生成Allure报告 pytest tests/ --alluredir=allure-results allure serve allure-results # 生成HTML报告 pytest tests/ --html=reports/report.html --self-contained-html # 生成覆盖率报告 pytest tests/ --cov=app --cov-report=html --cov-report=term ``` ### 使用测试脚本 ```bash python run_tests.py ``` ### 查看测试报告 #### HTML报告 测试完成后,打开 `reports/report.html` 查看详细的测试报告。 #### Allure报告 首先安装allure命令行工具: ```bash # 使用npm安装(需要先安装Node.js) npm install -g allure-commandline # 或者使用Homebrew(Mac) brew install allure # 或者下载二进制文件 # 访问:https://docs.qameta.io/allure/#_installing_a_commandline ``` 生成并查看allure报告: ```bash # 生成报告 allure generate allure-results -o allure-report --clean # 打开报告 allure open allure-report ``` #### 覆盖率报告 ```bash # 查看终端覆盖率报告 pytest tests/ --cov=app --cov-report=term-missing # 生成HTML覆盖率报告 pytest tests/ --cov=app --cov-report=html # 打开 htmlcov/index.html 查看详细报告 ``` ## 📋 Excel数据驱动测试 本项目集成了 **Excel数据驱动测试** 功能,支持从Excel文件中读取测试用例数据,实现灵活的数据驱动测试。 ### ✨ 功能特性 - 📊 **Excel文件支持**:支持.xlsx格式的Excel测试用例文件 - 🎯 **多场景覆盖**:用户创建、查询、系统接口等多种测试场景 - 🔄 **动态数据生成**:自动生成带时间戳的唯一测试数据,避免数据冲突 - 📈 **智能数据筛选**:支持按工作表、API方法、路径等条件筛选测试用例 - 📊 **测试统计分析**:提供详细的测试用例统计和分析功能 - 🎨 **Allure集成**:完美集成Allure报告,提供可视化测试结果 - 🌐 **中文支持**:完整支持中文测试用例名称和数据(pytest输出中的Unicode转义是正常现象) ### 🚀 快速开始 #### 1️⃣ 生成测试数据 ```bash # 生成Excel测试数据文件 python tests/data/generate_excel_testdata.py ``` #### 2️⃣ 运行Excel测试 ```bash # 运行Excel数据驱动测试示例 pytest tests/test_excel_data_driven_example.py -v # 生成Allure报告 pytest tests/test_excel_data_driven_example.py --alluredir=allure-results # 运行所有Excel数据驱动测试 pytest tests/test_api.py::TestExcelDataDriven -v # 运行特定测试方法 pytest tests/test_api.py::TestExcelDataDriven::test_create_user_from_excel -v pytest tests/test_api.py::TestExcelDataDriven::test_query_user_from_excel -v pytest tests/test_api.py::TestExcelDataDriven::test_system_api_from_excel -v ``` #### 3️⃣ 查看测试报告 ```bash # 启动Allure报告服务(推荐) allure serve allure-results # 或生成静态报告 allure generate allure-results --clean -o allure-report allure open allure-report ``` #### 4️⃣ 测试结果示例 ``` ========================= test session starts ========================= collected 11 items tests/test_excel_data_driven_example.py::test_create_user_from_excel[创建用户测试1] PASSED [ 9%] tests/test_excel_data_driven_example.py::test_create_user_from_excel[创建用户测试2] SKIPPED [18%] tests/test_excel_data_driven_example.py::test_create_user_from_excel[创建用户测试3] SKIPPED [27%] tests/test_excel_data_driven_example.py::test_query_user_from_excel[查询用户测试1] SKIPPED [36%] tests/test_excel_data_driven_example.py::test_query_user_from_excel[查询用户测试2] SKIPPED [45%] tests/test_excel_data_driven_example.py::test_system_api_from_excel[系统接口测试1] SKIPPED [54%] tests/test_excel_data_driven_example.py::test_system_api_from_excel[系统接口测试2] SKIPPED [63%] ========================= 1 passed, 10 skipped in 1.23s ========================= 注意:部分测试用例被跳过是正常现象,通常是由于测试条件或环境配置导致。 ``` ### 📊 Excel文件结构 Excel测试用例文件包含以下工作表: | 工作表 | 描述 | 测试用例数 | |--------|------|------------| | **用户创建** | 用户创建API测试用例 | 6个 | | **用户查询** | 用户查询API测试用例 | 2个 | | **系统接口** | 系统级API测试用例 | 2个 | #### 测试用例字段说明 | 字段名 | 描述 | 示例 | |--------|------|------| | **测试用例ID** | 唯一标识符 | TC001 | | **测试用例名称** | 测试场景描述 | 创建用户-正常场景 | | **API方法** | HTTP请求方法 | POST | | **API路径** | 接口路径 | /api/v1/users/ | | **请求数据** | JSON格式请求体 | {"name":"张三",...} | | **预期结果** | 期望的HTTP状态码 | 201 | | **测试分类** | 测试类别标签 | 正常场景 | ### 🎯 测试场景覆盖 #### 👤 用户创建测试 - ✅ **正常场景**:有效用户数据创建 - ✅ **边界测试**:最小/最大年龄值 - ✅ **异常场景**:无效邮箱格式、缺失必填字段 #### 🔍 用户查询测试 - ✅ **获取所有用户**:验证用户列表返回 - ✅ **健康检查**:系统状态验证 #### 🌐 系统接口测试 - ✅ **根路径访问**:基础功能验证 - ✅ **健康检查接口**:服务可用性验证 ### 🛠️ 自定义测试数据 #### 修改测试数据生成器 ```python # 编辑 tests/data/generate_excel_testdata.py # 添加新的测试用例 test_cases = [ { "测试用例ID": "TC011", "测试用例名称": "自定义测试场景", "API方法": "POST", "API路径": "/api/v1/custom/", "请求数据": '{"custom_field": "test_value"}', "预期结果": 200, "测试分类": "自定义场景" } ] ``` #### 扩展Excel读取器 ```python # 编辑 tests/utils/excel_reader.py # 添加新的筛选条件 def get_test_cases_by_category(self, category: str): """根据测试分类筛选测试用例""" return [case for case in self.test_cases if case.get('测试分类') == category] ``` ### 📈 最佳实践 #### 🎯 测试数据设计 - 使用时间戳确保数据唯一性 - 覆盖正常、边界、异常场景 - 保持测试数据的可维护性 #### 🔄 测试执行策略 - 定期重新生成测试数据 - 并行执行提高测试效率 - 结合CI/CD实现自动化测试 #### 📊 报告分析 - 利用Allure报告分析测试结果 - 关注失败用例的详细信息 - 定期回顾测试覆盖率 ## 🚀 性能测试 本项目集成了 **Locust** 压力测试框架,支持多种测试场景。 ### 🎯 测试特性 - ✅ **多场景支持**:负载、压力、峰值测试 - ✅ **用户模拟**:不同用户行为模式 - ✅ **实时监控**:Web界面查看测试状态 - ✅ **测试报告**:性能分析报告 - ✅ **CI/CD集成**:支持自动化测试 ### 📁 压力测试目录结构 ``` tests/performance/ ├── __init__.py # 模块初始化 ├── locustfile.py # Locust测试脚本 ├── config.py # 压力测试配置 ├── run_performance_test.py # 测试运行脚本 ├── analyzer.py # 结果分析工具 └── test_performance.py # pytest集成测试 ``` ### 🛠️ 快速开始 #### 使用Makefile运行 ```bash # 负载测试 make test-load # 压力测试 make test-stress # 启动Locust Web界面 make locust-web ``` #### 使用pytest运行 ```bash # 运行性能测试 pytest tests/performance/ -v # 生成报告 pytest tests/performance/ --alluredir=allure-results ``` ### 🎛️ Locust Web界面 ```bash # 启动Web界面 locust -f tests/performance/locustfile.py --host=http://localhost:8000 ``` 访问 http://localhost:8089 进行交互式测试: - 🎯 设置用户数量和孵化速率 - 📊 实时查看请求统计 - 📈 监控响应时间分布 ### 📊 测试场景 | 场景 | 用户数 | 持续时间 | 用途 | |------|--------|----------|------| | **负载测试** | 20 | 60秒 | 正常负载性能 | | **压力测试** | 50 | 120秒 | 系统承受能力 | | **峰值测试** | 100 | 60秒 | 突发负载处理 | ### 📈 性能报告 #### 报告内容 - 📊 **总体统计**:请求总数、失败率、平均响应时间、RPS - 📈 **响应时间分布**:50%、90%、95%、99%百分位数 - 🔍 **接口统计**:各API接口性能数据 ### ⚙️ 配置说明 #### 用户行为配置 - **APIUser**:模拟普通用户访问 - **AdminUser**:模拟管理员操作 - **RegularUser**:模拟常规用户行为 ### 🎯 最佳实践 #### 测试前准备 ```bash # 确保API服务运行 python main.py # 检查服务状态 curl http://localhost:8000/health ``` #### 监控要点 - 💻 **CPU使用率**:避免超过80% - 🧠 **内存使用**:监控内存泄漏 - 🌐 **网络带宽**:确保网络畅通 ### 🔧 故障排除 #### 常见问题 1. **连接被拒绝**:确保API服务运行 2. **测试超时**:检查网络和服务响应 3. **内存不足**:减少并发用户数 #### 调试技巧 ```bash # 启用详细日志 locust -f tests/performance/locustfile.py --loglevel DEBUG ``` ## 📚 API接口文档 ### 🏠 基础接口 | 方法 | 路径 | 描述 | 响应 | |------|------|------|------| | GET | `/` | 根路径欢迎信息 | 200 | | GET | `/health` | 健康检查 | 200 | ### 👤 用户管理接口 | 方法 | 路径 | 描述 | 请求体 | 响应 | |------|------|------|--------|------| | POST | `/api/v1/users/` | 创建用户 | UserCreate | 201 | | GET | `/api/v1/users/` | 获取所有用户 | - | 200 | | GET | `/api/v1/users/{user_id}` | 根据ID获取用户 | - | 200/404 | | PUT | `/api/v1/users/{user_id}` | 更新用户信息 | UserUpdate | 200/404 | | DELETE | `/api/v1/users/{user_id}` | 删除用户 | - | 204/404 | ### ⚠️ 错误测试接口 | 方法 | 路径 | 描述 | 响应码 | |------|------|------|--------| | GET | `/api/v1/errors/400` | 请求错误 | 400 | | GET | `/api/v1/errors/401` | 未授权 | 401 | | GET | `/api/v1/errors/403` | 禁止访问 | 403 | | GET | `/api/v1/errors/404` | 资源不存在 | 404 | | GET | `/api/v1/errors/422` | 参数验证错误 | 422 | | GET | `/api/v1/errors/500` | 服务器内部错误 | 500 | | GET | `/api/v1/errors/503` | 服务不可用 | 503 | ### 📋 数据模型 #### UserCreate(创建用户) ```json { "name": "张三", "email": "zhangsan@example.com", "age": 25 } ``` #### UserUpdate(更新用户) ```json { "name": "李四", "email": "lisi@example.com", "age": 30 } ``` #### UserResponse(用户响应) ```json { "id": 1, "name": "张三", "email": "zhangsan@example.com", "age": 25, "created_at": "2024-01-01T00:00:00", "updated_at": "2024-01-01T00:00:00" } ``` ## 🧪 测试用例覆盖 ### 🏠 基础功能测试 - ✅ 根路径访问测试 - ✅ 健康检查测试 - ✅ API文档访问测试 ### 👤 用户管理测试 - ✅ 创建用户(正常/邮箱重复/参数验证) - ✅ 获取所有用户(空列表/有数据) - ✅ 根据ID获取用户(存在/不存在) - ✅ 更新用户(存在/不存在/参数验证) - ✅ 删除用户(存在/不存在) ### 📋 Excel数据驱动测试 - ✅ **用户创建测试**:基于Excel文件的用户创建场景测试 - ✅ **用户查询测试**:基于Excel文件的用户查询场景测试 - ✅ **系统接口测试**:基于Excel文件的系统级API测试 - ✅ **测试数据统计**:Excel测试用例数据统计和分析 - ✅ **动态数据生成**:支持时间戳确保数据唯一性 - ✅ **灵活数据筛选**:支持按工作表、API方法、路径等筛选测试用例 ### ⚠️ 错误处理测试 - ✅ HTTP状态码测试(400/401/403/404/422/500/503) - ✅ 参数验证错误测试 - ✅ 请求格式错误测试 ### ⚡ 压力测试覆盖 - ✅ **冒烟测试**:快速验证系统基本功能和性能 - ✅ **负载测试**:正常负载下的性能表现测试 - ✅ **压力测试**:高负载下的系统承受能力测试 - ✅ **峰值测试**:突发高负载的处理能力测试 - ✅ **耐久测试**:长时间运行的稳定性测试 - ✅ **接口性能测试**:单个API接口的性能基准测试 - ✅ **用户行为模拟**:不同用户角色的访问模式测试 - ✅ **并发场景测试**:多用户同时访问的并发性能测试 - ✅ **响应时间分析**:详细的响应时间分布统计 - ✅ **吞吐量测试**:系统每秒处理请求数(RPS)测试 - ✅ **错误率监控**:高负载下的错误率和稳定性监控 - ✅ **资源使用监控**:CPU、内存、网络等资源使用情况 ### 🎯 性能基准测试 - ✅ API响应时间基准(<2秒正常负载) - ✅ 并发请求处理能力(支持50+并发用户) - ✅ 系统吞吐量基准(>10 RPS) - ✅ 错误率控制(<5%失败率) - ✅ 资源使用效率(CPU<80%, 内存稳定) ## ⚙️ 配置管理 ### 🔐 环境变量配置 项目使用环境变量进行配置管理,确保敏感信息不被硬编码到代码中。 #### 📋 配置文件说明 | 文件 | 用途 | 说明 | |------|------|------| | `.env.example` | 环境变量模板 | 包含所有配置项的示例值 | | `config/development.yaml` | 开发环境配置 | 开发环境专用配置 | | `config/production.yaml` | 生产环境配置 | 生产环境专用配置 | | `app/core/config.py` | 配置类定义 | 配置项的Python类定义 | #### 🚀 快速配置 ```bash # 1. 复制环境变量模板 cp .env.example .env # 2. 编辑环境变量文件 # 根据实际情况修改配置值 vim .env ``` #### 📝 主要配置项 **🔑 API Key 配置** ```bash # DeepSeek API 配置 DEEPSEEK_API_KEY=sk-your-deepseek-api-key-here DEEPSEEK_BASE_URL=https://api.deepseek.com DEEPSEEK_MODEL=deepseek-chat DEEPSEEK_MAX_TOKENS=4000 DEEPSEEK_TEMPERATURE=0.7 # 测试认证Token TEST_AUTH_TOKEN=Bearer test-token ``` **🛡️ 安全配置** ```bash # 应用密钥 SECRET_KEY=your-super-secret-key-here JWT_SECRET_KEY=your-jwt-secret-key-here # 环境设置 ENVIRONMENT=development DEBUG=true ``` **🗄️ 数据库配置** ```bash # 数据库连接 DATABASE_URL=sqlite:///./test.db # Redis配置 REDIS_HOST=localhost REDIS_PORT=6379 REDIS_PASSWORD=your-redis-password ``` #### ⚠️ 安全最佳实践 1. **🚫 永远不要提交 `.env` 文件到版本控制** 2. **🔄 定期轮换 API Key 和密钥** 3. **🔒 生产环境使用强密码** 4. **📋 使用 `.env.example` 作为配置模板** 5. **🔍 定期检查配置文件中的敏感信息** #### 🔧 配置验证 ```bash # 检查配置是否正确加载 python -c "from app.core.config import settings; print('配置加载成功:', settings.DEEPSEEK_API_KEY[:10] + '...')" # 验证API连接 python -c "from app.services.llm_service import LLMService; print('API连接测试:', LLMService().test_connection())" ``` ## 🛠️ 开发指南 ### 🎯 快速开发 ```bash # 代码格式化 make format # 代码质量检查 make lint # 运行测试 make test ``` ### 📝 添加新功能 1. **API端点**: `app/api/v1/endpoints/` 2. **数据模型**: `app/models/` 3. **业务逻辑**: `app/services/` 4. **测试用例**: `tests/` 5. **更新文档**: README.md ### 🧪 测试开发 ```bash # 运行特定测试 pytest tests/test_api.py::test_create_user -v # 生成测试报告 pytest --alluredir=allure-results ``` ## 👥 团队协作 ### 🔄 Git 工作流 ```bash # 创建功能分支 git checkout -b feature/new-feature # 开发完成后 make test && make lint git commit -m "feat: add new feature" git push origin feature/new-feature ``` ### ✅ 代码审查 - [ ] 代码规范 - [ ] 测试覆盖 - [ ] 文档更新 - [ ] 性能影响 ### ⚙️ 环境配置 ```bash # 复制环境配置 cp .env.example .env ``` ## 🐳 Docker 部署 ### 🚀 快速启动 ```bash # 一键启动所有服务 docker-compose up -d # 查看服务状态 docker-compose ps ``` ### 📦 镜像构建 ```bash # 构建镜像 docker build -t apitest:latest . # 运行容器 docker run -d -p 8000:8000 --name apitest apitest:latest ``` ### 🔧 常用命令 ```bash # 查看日志 docker-compose logs -f api # 进入容器 docker exec -it apitest /bin/bash # 重启服务 docker-compose restart api # 清理环境 docker-compose down -v ``` ### 📊 服务地址 | 服务 | 地址 | 描述 | |------|------|------| | **API 服务** | http://localhost:8000 | 主要服务 | | **API 文档** | http://localhost:8000/docs | 接口文档 | | **测试报告** | http://localhost:4040 | Allure 报告 | ### 🚀 生产部署 ```bash # 使用 gunicorn gunicorn app.main:app -w 4 -k uvicorn.workers.UvicornWorker # 使用 systemd sudo systemctl start apitest ``` ## 📊 监控日志 ### 🔍 健康检查 ```bash # 检查服务状态 curl http://localhost:8000/health # 检查API文档 curl http://localhost:8000/docs ``` ### 📝 日志配置 ```python # app/core/config.py LOG_LEVEL = "INFO" LOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s" ``` ## 🔧 故障排除 ### ❓ 常见问题 **服务启动失败** ```bash # 检查端口占用 netstat -tulpn | grep 8000 # 检查依赖 pip list | grep fastapi ``` **测试失败** ```bash # 清理缓存 pytest --cache-clear # 重新安装依赖 pip install -r requirements.txt --force-reinstall ``` **导入错误** ```bash # 设置路径 export PYTHONPATH=$PWD:$PYTHONPATH # 使用模块运行 python -m pytest tests/ ``` ## 📈 性能优化 ### 🚀 API 优化 - 异步处理 - 请求缓存 - 连接池 - 响应压缩 ### 🧪 测试优化 - 并行执行 - 数据复用 - Mock 依赖 - 选择性运行 ## 🤝 贡献指南 ### 📝 贡献流程 1. **Fork** 项目到你的账户 2. **Clone** 到本地开发 3. **创建分支** `git checkout -b feature/new-feature` 4. **开发功能** 并编写测试 5. **运行测试** `make test && make lint` 6. **提交代码** `git commit -m 'feat: add new feature'` 7. **推送分支** `git push origin feature/new-feature` 8. **创建PR** 提交 Pull Request ### 📋 提交规范 | 类型 | 描述 | |------|------| | `feat` | 新功能 | | `fix` | 修复bug | | `docs` | 文档更新 | | `test` | 测试相关 | | `refactor` | 代码重构 | ## 🛠️ 技术栈 ### 🚀 核心技术 - **FastAPI**: 现代Python Web框架 - **pytest**: 测试框架 - **Allure**: 测试报告 - **Docker**: 容器化部署 ### 🔧 开发工具 - **Black**: 代码格式化 - **flake8**: 代码检查 - **Pydantic**: 数据验证 - **Uvicorn**: ASGI服务器 ### 📋 数据处理 - **pandas**: 数据分析和处理 - **openpyxl**: Excel文件读写 - **xlrd**: Excel文件读取支持 ## 📄 许可证 本项目采用 [MIT License](LICENSE) 开源许可证。 ## 📞 联系方式 - **GitHub Issues**: [提交问题](https://github.com/your-org/APItest/issues) - **项目文档**: [在线文档](https://your-org.github.io/APItest/) --- **⚠️ 重要提示**: 这是一个演示项目,用于学习API自动化测试。生产环境使用时请确保: - 添加身份认证和授权 - 实现数据持久化存储 - 配置生产级日志监控 - 进行安全性测试评估