测试 FastAPI 应用程序

FastAPI 应用程序需要经过测试,以确保其端点能够返回正确的响应并按预期运行。在 Python 中,我们可以使用 TestClient 对 FastAPI API 进行自动化测试,也可以使用 requests 库进行手动测试或集成测试。

使用 TestClient

TestClient 是 FastAPI 提供的一个基于 HTTPX 的测试工具。它允许我们在不运行服务器的情况下测试 API 端点,这使其成为单元测试和自动化测试的理想选择。以下是基本语法:

> client = TestClient(app)

>

> def testfunctionname():

> response = client.get("/")

> assert response.status_code == 200

> assert response.json() == {"msg": "Message"}

  • 当使用 pytest 时,测试函数名称必须以 test_ 开头,以便 pytest 能够自动发现并执行它。
  • response.status_code 用于验证 HTTP 响应状态。
  • response.json() 用于检查响应体。

示例: 本示例定义了一个 FastAPI 端点并使用 TestClient 对其进行测试。该测试同时检查了 HTTP 状态码和返回的 JSON 响应。

Python


CODEBLOCK_6e2db395

现在,让我们打开终端并运行以下命令来测试我们创建的 FastAPI 应用程序。

> pytest practice.py

这里,practice.py 是 Python 脚本的名称。

输出

!TestClient终端快照

解释:

  • TestClient(app) 为 FastAPI 应用程序创建了一个测试客户端。
  • client.get("/") 向根端点发送了一个 GET 请求。
  • response.status_code 验证请求是否成功。
  • response.json() 检查返回的响应是否与预期输出匹配。
  • 函数名 testreadmain 使得 pytest 能够发现并运行该测试。

使用 Requests 库

requests 库用于向正在运行的 FastAPI 服务器发送 HTTP 请求。这种方法适用于手动测试或集成测试,但不适合用于单元测试。
示例: 在本示例中,API 会比较两条消息,如果它们匹配则返回 "Test Passed"(测试通过)。

Python


CODEBLOCK_c5fde54a

解释:

  • @app.get("/") 定义了一个 GET 端点。
  • msg 和 test_msg 存储了用于比较的样本值。
  • 条件检查决定了 API 返回的响应消息。

现在,让我们打开终端并运行以下命令来运行 FastAPI 应用程序。如果应用程序发生更改,此命令还将允许应用重新加载。

> uvicorn practice:app –reload

创建一个名为 test.py 的单独文件来测试正在运行的 FastAPI 应用程序。

Python


CODEBLOCK_8698e8cc

输出

!RequestLib终端快照

解释:

  • requests.get() 向正在运行的 FastAPI 服务器发送 HTTP GET 请求。
  • URL http://127.0.0.1:8000/ 必须与服务器地址匹配。
  • response.json() 打印 API 返回的响应。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/53078.html
点赞
0.00 平均评分 (0% 分数) - 0