快速了解FastAPI
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,由 Python 3.6+ 支持。它具有异步架构,并且完全基于标准 Python 类型提示。FastAPI 的设计理念是简单、快速且易于扩展,非常适合用于构建 API 服务。
入门FastAPI
安装FastAPI
首先,确保你已经安装了 Python,然后使用 pip 命令安装 FastAPI:
pip install fastapi uvicorn
创建第一个FastAPI应用
创建一个名为 main.py 的文件,并添加以下代码:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Hello World"}
使用以下命令启动服务器:
uvicorn main:app --reload
在浏览器中访问 http://127.0.0.1:8000/,你应该能看到 “Hello World” 消息。
自动化测试FastAPI
自动化测试是确保 API 正常工作的关键。在 FastAPI 中,我们可以使用 TestClient 来编写自动化测试脚本。
安装测试库
安装 pytest 和 pytest-fastapi:
pip install pytest pytest-fastapi
编写测试脚本
创建一个名为 test_main.py 的文件,并添加以下代码:
from fastapi.testclient import TestClient
from main import app
client = TestClient(app)
def test_read_root():
response = client.get("/")
assert response.status_code == 200
assert response.json() == {"message": "Hello World"}
运行测试脚本:
pytest test_main.py
你应该能看到测试通过的消息。
实战案例:测试用户注册接口
以下是一个用户注册接口的实战案例,我们将使用 FastAPI 和 TestClient 来编写自动化测试脚本。
创建用户注册接口
在 main.py 文件中添加以下代码:
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
app = FastAPI()
class User(BaseModel):
username: str
password: str
@app.post("/register")
async def register(user: User):
# 模拟注册逻辑
if "admin" in user.username:
raise HTTPException(status_code=400, detail="Admin account is not allowed")
return {"message": "User registered successfully"}
编写测试脚本
创建一个名为 test_register.py 的文件,并添加以下代码:
from fastapi.testclient import TestClient
from main import app
client = TestClient(app)
def test_register():
response = client.post("/register", json={"username": "test", "password": "123456"})
assert response.status_code == 400
assert response.json() == {"detail": "Admin account is not allowed"}
response = client.post("/register", json={"username": "user1", "password": "123456"})
assert response.status_code == 200
assert response.json() == {"message": "User registered successfully"}
运行测试脚本:
pytest test_register.py
你应该能看到测试通过的消息。
总结
通过本文,我们了解了 FastAPI 和自动化测试的基础知识,并使用 Python 和 TestClient 编写了两个实战案例。这些技能将帮助你更轻松地开发和测试 FastAPI 应用。希望这篇文章对你有所帮助!
