- 添加架构文档 (ARCHITECTURE.md) - 添加 API 文档 (API.md) - 添加文档索引 (docs/README.md) - 添加部署技能 (skills/city-manual-deploy/SKILL.md) - 添加测试技能 (skills/city-manual-test/SKILL.md) - 添加内容管理技能 (skills/city-manual-content/SKILL.md)
230 lines
4.9 KiB
Markdown
230 lines
4.9 KiB
Markdown
# Skill: city-manual-test
|
|
|
|
## Description
|
|
|
|
城市手册项目测试技能。用于运行项目测试和 API 验证。
|
|
|
|
## Location
|
|
|
|
`/root/.openclaw/workspace/city-manual/skills/city-manual-test/`
|
|
|
|
## Capabilities
|
|
|
|
- 运行 Django 测试
|
|
- API 端点测试
|
|
- 数据库连接测试
|
|
- 前端构建测试
|
|
- 性能测试
|
|
|
|
## Usage
|
|
|
|
当用户提到以下关键词时激活此技能:
|
|
- "测试城市手册"
|
|
- "run tests"
|
|
- "API 测试"
|
|
- "验证功能"
|
|
|
|
## Scripts
|
|
|
|
### test_api.py
|
|
|
|
```python
|
|
#!/usr/bin/env python3
|
|
"""
|
|
城市手册 API 测试脚本
|
|
"""
|
|
|
|
import requests
|
|
import json
|
|
|
|
BASE_URL = "http://127.0.0.1:8000/api"
|
|
|
|
def test_auth():
|
|
"""测试认证 API"""
|
|
print("=== 测试认证 API ===")
|
|
|
|
# 登录
|
|
response = requests.post(f"{BASE_URL}/auth/token/", json={
|
|
"username": "demo",
|
|
"password": "demo123"
|
|
})
|
|
|
|
if response.status_code == 200:
|
|
token = response.json()["access"]
|
|
print("✅ 登录成功")
|
|
return token
|
|
else:
|
|
print(f"❌ 登录失败:{response.status_code}")
|
|
return None
|
|
|
|
def test_users(token):
|
|
"""测试用户 API"""
|
|
print("\n=== 测试用户 API ===")
|
|
|
|
headers = {"Authorization": f"Bearer {token}"}
|
|
|
|
# 获取当前用户
|
|
response = requests.get(f"{BASE_URL}/users/me/", headers=headers)
|
|
if response.status_code == 200:
|
|
print(f"✅ 获取用户信息成功:{response.json()['username']}")
|
|
else:
|
|
print(f"❌ 获取用户信息失败:{response.status_code}")
|
|
|
|
def test_regions(token):
|
|
"""测试版块 API"""
|
|
print("\n=== 测试版块 API ===")
|
|
|
|
# 获取版块列表
|
|
response = requests.get(f"{BASE_URL}/regions/")
|
|
if response.status_code == 200:
|
|
data = response.json()
|
|
print(f"✅ 获取版块列表成功:共 {data['count']} 个版块")
|
|
if data['results']:
|
|
print(f" 第一个版块:{data['results'][0]['name']}")
|
|
else:
|
|
print(f"❌ 获取版块列表失败:{response.status_code}")
|
|
|
|
def test_articles(token):
|
|
"""测试文章 API"""
|
|
print("\n=== 测试文章 API ===")
|
|
|
|
# 获取文章列表
|
|
response = requests.get(f"{BASE_URL}/articles/")
|
|
if response.status_code == 200:
|
|
data = response.json()
|
|
print(f"✅ 获取文章列表成功:共 {data['count']} 篇文章")
|
|
else:
|
|
print(f"❌ 获取文章列表失败:{response.status_code}")
|
|
|
|
def test_services(token):
|
|
"""测试特色服务 API"""
|
|
print("\n=== 测试特色服务 API ===")
|
|
|
|
# 获取特色服务列表
|
|
response = requests.get(f"{BASE_URL}/services/")
|
|
if response.status_code == 200:
|
|
data = response.json()
|
|
print(f"✅ 获取特色服务列表成功:共 {data['count']} 个服务")
|
|
else:
|
|
print(f"❌ 获取特色服务列表失败:{response.status_code}")
|
|
|
|
def test_database():
|
|
"""测试数据库连接"""
|
|
print("\n=== 测试数据库连接 ===")
|
|
|
|
import psycopg2
|
|
|
|
try:
|
|
conn = psycopg2.connect(
|
|
host="10.2.0.100",
|
|
port=5432,
|
|
database="cssc",
|
|
user="coder",
|
|
password="825670wl"
|
|
)
|
|
cur = conn.cursor()
|
|
cur.execute("SELECT 1")
|
|
cur.close()
|
|
conn.close()
|
|
print("✅ 数据库连接成功")
|
|
return True
|
|
except Exception as e:
|
|
print(f"❌ 数据库连接失败:{e}")
|
|
return False
|
|
|
|
def main():
|
|
"""主函数"""
|
|
print("城市手册 API 测试开始\n")
|
|
|
|
# 测试数据库
|
|
test_database()
|
|
|
|
# 测试认证
|
|
token = test_auth()
|
|
if not token:
|
|
print("\n❌ 认证失败,停止测试")
|
|
return
|
|
|
|
# 测试各 API
|
|
test_users(token)
|
|
test_regions(token)
|
|
test_articles(token)
|
|
test_services(token)
|
|
|
|
print("\n=== 测试完成 ===")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
```
|
|
|
|
## Commands
|
|
|
|
### 运行 Django 测试
|
|
|
|
```bash
|
|
cd /root/.openclaw/workspace/city-manual/backend
|
|
python manage.py test
|
|
```
|
|
|
|
### 运行 API 测试
|
|
|
|
```bash
|
|
cd /root/.openclaw/workspace/city-manual
|
|
python test_api.py
|
|
```
|
|
|
|
### 运行前端测试
|
|
|
|
```bash
|
|
cd /root/.openclaw/workspace/city-manual/frontend
|
|
npm test
|
|
```
|
|
|
|
### 数据库连接测试
|
|
|
|
```bash
|
|
psql -h 10.2.0.100 -U coder -d cssc -c "SELECT 1"
|
|
```
|
|
|
|
## Health Check
|
|
|
|
```bash
|
|
# 检查所有服务
|
|
curl http://127.0.0.1:8000/admin/
|
|
curl http://127.0.0.1/
|
|
psql -h 10.2.0.100 -U coder -d cssc -c "SELECT 1"
|
|
```
|
|
|
|
## Test Cases
|
|
|
|
### 用户认证测试
|
|
1. 正常登录
|
|
2. 错误密码
|
|
3. 令牌刷新
|
|
4. 令牌过期
|
|
|
|
### 版块管理测试
|
|
1. 获取版块列表
|
|
2. 获取版块详情
|
|
3. 创建版块(管理员)
|
|
4. 版块层级查询
|
|
|
|
### 内容管理测试
|
|
1. 获取文章列表
|
|
2. 获取文章详情
|
|
3. 创建文章
|
|
4. 更新文章
|
|
5. 删除文章
|
|
6. 文章审核流程
|
|
|
|
### 互动功能测试
|
|
1. 发表评论
|
|
2. 评分
|
|
3. 点赞
|
|
4. 收藏
|
|
|
|
## References
|
|
|
|
- [TESTING.md](../../TESTING.md)
|
|
- [test_api.py](../../test_api.py)
|