添加项目基础结构,包括: - 核心模块(src/main.py) - 路由模块(users/items) - 数据库配置和模型 - 日志工具 - 测试用例 - 项目文档和依赖配置
92 lines
2.3 KiB
Python
92 lines
2.3 KiB
Python
import pytest
|
|
from fastapi.testclient import TestClient
|
|
from src.main import app
|
|
|
|
client = TestClient(app)
|
|
|
|
def test_create_user():
|
|
response = client.post(
|
|
"/users/",
|
|
json={
|
|
"email": "test@example.com",
|
|
"first_name": "Test",
|
|
"last_name": "User",
|
|
"password": "testpassword"
|
|
}
|
|
)
|
|
assert response.status_code == 201
|
|
data = response.json()
|
|
assert data["email"] == "test@example.com"
|
|
assert "id" in data
|
|
|
|
def test_read_users():
|
|
response = client.get("/users/")
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert isinstance(data, list)
|
|
|
|
def test_read_user():
|
|
# First create a user
|
|
response = client.post(
|
|
"/users/",
|
|
json={
|
|
"email": "test2@example.com",
|
|
"first_name": "Test2",
|
|
"last_name": "User2",
|
|
"password": "testpassword"
|
|
}
|
|
)
|
|
assert response.status_code == 201
|
|
user_id = response.json()["id"]
|
|
|
|
# Then read the user
|
|
response = client.get(f"/users/{user_id}")
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert data["id"] == user_id
|
|
|
|
def test_update_user():
|
|
# First create a user
|
|
response = client.post(
|
|
"/users/",
|
|
json={
|
|
"email": "test3@example.com",
|
|
"first_name": "Test3",
|
|
"last_name": "User3",
|
|
"password": "testpassword"
|
|
}
|
|
)
|
|
assert response.status_code == 201
|
|
user_id = response.json()["id"]
|
|
|
|
# Then update the user
|
|
response = client.put(
|
|
f"/users/{user_id}",
|
|
json={
|
|
"email": "updated@example.com",
|
|
"first_name": "Updated",
|
|
"last_name": "User",
|
|
"password": "updatedpassword"
|
|
}
|
|
)
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert data["email"] == "updated@example.com"
|
|
|
|
def test_delete_user():
|
|
# First create a user
|
|
response = client.post(
|
|
"/users/",
|
|
json={
|
|
"email": "test4@example.com",
|
|
"first_name": "Test4",
|
|
"last_name": "User4",
|
|
"password": "testpassword"
|
|
}
|
|
)
|
|
assert response.status_code == 201
|
|
user_id = response.json()["id"]
|
|
|
|
# Then delete the user
|
|
response = client.delete(f"/users/{user_id}")
|
|
assert response.status_code == 204 |