FastAPI 如何进行测试?

推荐答案

在 FastAPI 中进行测试通常使用 pytest 和 FastAPI 提供的 TestClient。以下是一个简单的测试示例:

-- -------------------- ---- -------
---- ------- ------ -------
---- ------------------ ------ ----------

--- - ---------

-------------
--- ------------
    ------ ----------- ------ -------

------ - ---------------

--- -----------------
    -------- - ---------------
    ------ -------------------- -- ---
    ------ --------------- -- ----------- ------ -------

在这个示例中,我们创建了一个简单的 FastAPI 应用,并使用 TestClient 来模拟 HTTP 请求。test_read_root 函数测试了根路径 / 的响应,确保状态码为 200,并且返回的 JSON 数据与预期一致。

本题详细解读

1. 使用 TestClient 进行测试

TestClient 是 FastAPI 提供的一个工具,用于在测试中模拟 HTTP 请求。它允许你像发送真实 HTTP 请求一样发送请求,并获取响应。你可以使用它来测试你的 API 端点,确保它们按预期工作。

2. 编写测试用例

在编写测试用例时,通常会使用 pytest 作为测试框架。pytest 是一个功能强大且易于使用的 Python 测试框架,支持简单的单元测试到复杂的功能测试。

在测试用例中,你可以使用 assert 语句来验证响应的状态码、返回的数据等是否符合预期。例如:

3. 运行测试

要运行测试,你可以在终端中运行以下命令:

pytest 会自动发现并运行项目中的测试文件。如果所有测试都通过,你将看到类似以下的输出:

4. 测试覆盖率

为了确保你的代码被充分测试,你可以使用 pytest-cov 插件来检查测试覆盖率。安装 pytest-cov 后,你可以运行以下命令来生成覆盖率报告:

这将生成一个覆盖率报告,显示哪些代码行被测试覆盖,哪些没有。

5. 测试异步代码

如果你的 FastAPI 应用使用了异步代码(例如 async def),你可以使用 pytest-asyncio 插件来测试异步代码。例如:

-- -------------------- ---- -------
------ ------
---- ------- ------ -------
---- ------------------ ------ ----------

--- - ---------

-------------
----- --- ------------
    ------ ----------- ------ -------

------ - ---------------

--------------------
----- --- -----------------
    -------- - ---------------
    ------ -------------------- -- ---
    ------ --------------- -- ----------- ------ -------

在这个示例中,@pytest.mark.asyncio 装饰器用于标记异步测试函数。

纠错
反馈