测试客户端与测试夹具
为测试启动应用和客户端
测试客户端与测试夹具 是 CoddyKit 上的免费 Flask Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Flask Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Flask Academy 课程共包含 4 节课。
本课时的部分内容尚未翻译,以英文显示。
Why Test Your Flask App
Tests let you change code without fear. With pytest you can prove every route still works in seconds, instead of clicking through your app by hand. 🧪
Meet the Test Client
Flask ships a fake browser called the test client. It calls your routes in memory, with no real server or network involved.
client = app.test_client()
resp = client.get('/')Get a Client From Your App
You build the client by calling app.test_client(). It returns an object whose methods mirror real HTTP verbs like get and post.
from app import app
client = app.test_client()Send a Request, Get a Response
Calling client.get('/') returns a response object. You inspect it just like a real one, but everything ran instantly inside Python.
resp = client.get('/')
print(resp.status_code)What Is a Fixture
A fixture is reusable setup code pytest runs before a test. Instead of rebuilding the client everywhere, you define it once and reuse it.
Write a Client Fixture
Decorate a function with @pytest.fixture and yield a test client. Any test that names it as an argument receives a fresh client.
@pytest.fixture
def client():
yield app.test_client()Request the Fixture by Name
To use a fixture, simply add its name as a test argument. Pytest sees the match and injects the value for you automatically.
def test_home(client):
resp = client.get('/')
assert resp.status_code == 200Yield vs Return in Fixtures
Using yield lets you run cleanup after the test finishes. Code before yield is setup; code after yield tears everything down.
@pytest.fixture
def client():
yield app.test_client()
print('cleanup here')Where to Put Fixtures
Put shared fixtures in a file named conftest.py. Pytest finds it automatically, so every test file can use those fixtures with no import.
Naming Test Files
Pytest discovers files that start with test_ and functions named the same way. Stick to that pattern and your tests run with one command.
# file: test_routes.py
def test_home(client):
...Run the Whole Suite
From your project root, just run pytest in the terminal. It collects every test file, runs them, and prints a clean pass or fail summary.
$ pytest
2 passed in 0.04sQuick Check
You want a reusable test client. How do you do it?
Recap: Client and Fixtures
You met the in-memory test client and learned to share it with a fixture in conftest.py. Now every test starts with a ready client. 🎉
常见问题解答
「测试客户端与测试夹具」课时是免费的吗?
是的 — 「测试客户端与测试夹具」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Flask Academy 课程的其余内容,请升级到 CoddyKit PRO。 Flask Academy 课程共包含 4 节课。
「测试客户端与测试夹具」这节课中我会学到什么?
为测试启动应用和客户端 你通过在浏览器中直接运行的动手代码来练习 Flask Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Flask Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Flask Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「测试客户端与测试夹具」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Flask Academy 课中编写并运行代码吗?
能。每节 Flask Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 测试客户端与测试夹具
- 断言路由与 JSON
- 使用测试数据库隔离测试
- 测试需要身份验证的端点