32 使用pytest进行FastAPI测试
在上一篇文章中,我们探讨了如何编写单元测试,以确保我们的FastAPI应用能够按预期的方式运行。在本篇文章中,我们将进一步深入,研究如何使用pytest
进行测试。pytest
是一个强大的测试框架,能够方便地编写简单和复杂的测试。
安装pytest
在开始之前,我们需要确保安装了pytest
和httpx
两个依赖。httpx
是一个用于发送HTTP请求的库,我们将用它来测试FastAPI应用。
你可以通过以下命令安装这两个库:
1 | pip install pytest httpx |
创建测试文件
在FastAPI项目的根目录下,通常会创建一个tests
文件夹来存放测试文件。下面是一个测试文件的目录结构示例:
1 | /your-fastapi-project |
在test_main.py
中,我们将编写我们的第一个测试。
编写测试
在FastAPI中,我们可以使用TestClient
来自fastapi.testclient
进行集成测试。以下是一个简单的示例,展示如何使用pytest
和FastAPI
测试框架。
假设我们的main.py
文件中有一个简单的API端点:
1 | # app/main.py |
我们将为这个API编写测试。
在test_main.py
中,代码如下:
1 | # tests/test_main.py |
解释测试代码
使用
pytest.mark.asyncio
: 由于我们的FastAPI端点是异步的,我们需要使用@pytest.mark.asyncio
修饰器来标记测试为异步测试。使用
AsyncClient
: 我们用AsyncClient
来发起HTTP请求,这个客户端会在事件循环中运行,非常适合测试异步应用。使用
assert
语句: 我们使用assert
来验证返回的状态码和响应内容是否符合预期。
运行测试
要运行测试,只需在项目的根目录执行以下命令:
1 | pytest |
这将会自动发现所有以test_
开头的函数并运行它们。
测试覆盖率
在项目中,查看测试覆盖率可以帮助我们了解哪些代码已经得到测试。可以通过安装pytest-cov
来实现。
安装命令:
1 | pip install pytest-cov |
然后,你可以使用以下命令在运行测试时查看测试覆盖率:
1 | pytest --cov=app tests/ |
这条命令将显示在app
文件夹下代码的测试覆盖率。
总结
在本篇文章中,我们学习了如何使用pytest
和httpx
来测试FastAPI应用。我们编写了基本的集成测试,以验证API端点的行为。测试是保证代码稳定性和可维护性的重要手段,希望你能在你的FastAPI项目中积极使用测试。
在下一篇文章中,我们将深入探讨如何使用数据库进行测试,确保我们的数据交互部分也是稳定和可靠的。希望你继续关注接下来的内容。
32 使用pytest进行FastAPI测试