搜索
首页后端开发Python教程使用 FastAPI 和 Postman 进行负载测试:综合指南

想象一下这样的场景,您的初创公司开始受到关注。用户数突然增加!现在,用户数量不断从 10 个增加到 100 个,并且已经使用您的应用程序相当长一段时间了。单击一些按钮,使用一些功能,向后端服务器发出请求......

在这种情况下你不希望的是毫无准备。您希望确保您的应用程序对用户可靠并且可用。这就是测试的用武之地,我们在这里讨论的是一种适合测试这种场景的特定类型的测试,负载测试

在本指南中,我们将重点关注使用 FastAPI 及其自动 OpenAPI 规范生成来简化生成用于负载测试的 Postman 集合的过程。最后,您将了解如何利用 FastAPI 的 OpenAPI 规范和 Postman 大规模测试您的应用程序。


?为什么使用 FastAPI 和 Postman 进行负载测试?

FastAPI 具有内置的 OpenAPI 支持,可以轻松记录和测试您的 API。通过将 FastAPI 与 Postman 结合,您可以:

  • 从 FastAPI API 的 OpenAPI 文档自动生成 Postman 集合
  • 通过将集合直接导入 Postman 来简化请求设置
  • 利用 Postman 强大的测试和脚本功能进行动态数据生成。
  • 以编程方式扩展测试使用 Newman(Postman 的 CLI 工具)进行 CI/CD 集成。

FastAPI 和 Postman 之间的协同作用使开发人员能够快速模拟真实的流量场景并识别应用程序中的瓶颈。


?️ 第 1 步:设置 FastAPI 和 Swagger

1.1 启动您的 FastAPI 应用程序

确保您的 FastAPI 应用程序在本地或服务器上运行。例如:

from fastapi import FastAPI

app = FastAPI()

@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

服务器启动时,OpenAPI JSON端点将在http://127.0.0.1:8000/openapi.json可用。

1.2 验证 OpenAPI JSON

打开浏览器并导航到 http://127.0.0.1:8000/openapi.json 以确保 OpenAPI JSON 可以访问。


?第 2 步:将 OpenAPI JSON 导出到 Postman

2.1 复制OpenAPI端点

您可以使用浏览器或通过curl在本地保存OpenAPI JSON文件:

curl -o openapi.json http://127.0.0.1:8000/openapi.json

或者只需复制 OpenAPI 端点 URL,http://127.0.0.1:8000/openapi.json。

2.2 将OpenAPI JSON导入Postman

  1. 打开 Postman,然后点击左上角的导入
  2. 选择下载的 openapi.json 文件。
  3. Postman 将自动生成一个包含 OpenAPI 规范中定义的所有端点的集合。

如果您刚刚复制了端点 URL,则只需将 URL 粘贴到单击 导入

时出现的模式顶部的输入栏即可

Load Testing using FastAPI and Postman: Comprehensive Guide

2.3 组织和测试您的集合

检查导入的集合以确保所有端点均已正确配置。您还可以根据身份验证或数据管理的需要添加环境变量或脚本。


?第 3 步:准备在 Postman 中进行负载测试

3.1 将动态数据添加到您的请求中

要模拟真实场景,请修改您的请求以包含动态数据。例如,使用Postman的内置变量或预请求脚本:

预请求脚本示例:

from fastapi import FastAPI

app = FastAPI()

@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

负载示例:

curl -o openapi.json http://127.0.0.1:8000/openapi.json

您还可以使用 $randomInt 等内置脚本来生成随机值。
使用内置脚本的示例用例:

pm.variables.set("random_id", Math.floor(Math.random() * 10000));
这个内置脚本将在每个请求中返回 0-1000 之间的随机值。

3.2 配置集合中的变量

在 Postman 中使用集合变量来管理 API 基本 URL、身份验证令牌或动态参数,而无需您的集合。这简化了整个集合的更新和测试。

Load Testing using FastAPI and Postman: Comprehensive Guide

?步骤 4:使用 Postman 的 Collection Runner 运行性能测试

Postman 现在包含内置性能测试功能,可让您模拟用户流量并评估 API 的性能。

4.1 启动 Collection Runner

  1. 单击 Postman 中的 Runner 按钮(烧杯图标)。
  2. 选择从 FastAPI OpenAPI JSON.4.2 导入的集合设置测试参数

4.2 配置性能测试设置

  • 虚拟用户:指定模拟并发负载的虚拟用户数量。
  • 测试持续时间:设置测试应运行的持续时间。
  • 负载配置文件:在固定、上升、尖峰或峰值负载配置文件之间进行选择以模拟不同的流量模式。4.3 执行负载测试

4.3 执行性能测试

单击“运行”开始性能测试。 Postman 将显示实时性能指标,例如平均响应时间、错误率和吞吐量。


?第 5 步:分析测试结果

测试完成后,分析结果以确定性能瓶颈:

  • 响应时间:检查响应时间是否满足您的应用程序的性能标准。
  • 错误率:识别测试期间发生的任何错误并调查其原因。
  • 吞吐量:评估每秒处理的请求数,以确保其与预期负载保持一致。

Postman 提供详细的指标,并允许您比较多个测试运行以跟踪性能随时间的变化。


?使用 FastAPI 和 Postman 进行负载测试的最佳实践

  1. 保持 OpenAPI 文档更新:确保您的 FastAPI 文档反映 API 的当前状态,以便进行准确的测试。
  2. 使用动态数据:结合测试数据的可变性来模拟不同的现实场景。
  3. 监控系统资源:使用监控工具观察测试过程中CPU、内存和网络的使用情况。
  4. 自动化测试:将性能测试集成到 CI/CD 管道中以进行持续评估。
  5. 根据发现进行迭代:根据性能测试结果定期更新您的测试和应用程序。

?结论

通过利用FastAPI的OpenAPI规范和Postman的性能测试功能,您可以有效地模拟用户流量并识别潜在的性能问题。这种方法使您能够确保 FastAPI 应用程序在不同的负载条件下保持稳健和响应。

测试愉快!

以上是使用 FastAPI 和 Postman 进行负载测试:综合指南的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
列表和阵列之间的选择如何影响涉及大型数据集的Python应用程序的整体性能?列表和阵列之间的选择如何影响涉及大型数据集的Python应用程序的整体性能?May 03, 2025 am 12:11 AM

ForhandlinglargedatasetsinPython,useNumPyarraysforbetterperformance.1)NumPyarraysarememory-efficientandfasterfornumericaloperations.2)Avoidunnecessarytypeconversions.3)Leveragevectorizationforreducedtimecomplexity.4)Managememoryusagewithefficientdata

说明如何将内存分配给Python中的列表与数组。说明如何将内存分配给Python中的列表与数组。May 03, 2025 am 12:10 AM

Inpython,ListSusedynamicMemoryAllocationWithOver-Asalose,而alenumpyArraySallaySallocateFixedMemory.1)listssallocatemoremoremoremorythanneededinentientary上,respizeTized.2)numpyarsallaysallaysallocateAllocateAllocateAlcocateExactMemoryForements,OfferingPrediCtableSageButlessemageButlesseflextlessibility。

您如何在Python数组中指定元素的数据类型?您如何在Python数组中指定元素的数据类型?May 03, 2025 am 12:06 AM

Inpython,YouCansspecthedatatAtatatPeyFelemereModeRernSpant.1)Usenpynernrump.1)Usenpynyp.dloatp.dloatp.ploatm64,formor professisconsiscontrolatatypes。

什么是Numpy,为什么对于Python中的数值计算很重要?什么是Numpy,为什么对于Python中的数值计算很重要?May 03, 2025 am 12:03 AM

NumPyisessentialfornumericalcomputinginPythonduetoitsspeed,memoryefficiency,andcomprehensivemathematicalfunctions.1)It'sfastbecauseitperformsoperationsinC.2)NumPyarraysaremorememory-efficientthanPythonlists.3)Itoffersawiderangeofmathematicaloperation

讨论'连续内存分配”的概念及其对数组的重要性。讨论'连续内存分配”的概念及其对数组的重要性。May 03, 2025 am 12:01 AM

Contiguousmemoryallocationiscrucialforarraysbecauseitallowsforefficientandfastelementaccess.1)Itenablesconstanttimeaccess,O(1),duetodirectaddresscalculation.2)Itimprovescacheefficiencybyallowingmultipleelementfetchespercacheline.3)Itsimplifiesmemorym

您如何切成python列表?您如何切成python列表?May 02, 2025 am 12:14 AM

SlicingaPythonlistisdoneusingthesyntaxlist[start:stop:step].Here'showitworks:1)Startistheindexofthefirstelementtoinclude.2)Stopistheindexofthefirstelementtoexclude.3)Stepistheincrementbetweenelements.It'susefulforextractingportionsoflistsandcanuseneg

在Numpy阵列上可以执行哪些常见操作?在Numpy阵列上可以执行哪些常见操作?May 02, 2025 am 12:09 AM

numpyallowsforvariousoperationsonArrays:1)basicarithmeticlikeaddition,减法,乘法和division; 2)evationAperationssuchasmatrixmultiplication; 3)element-wiseOperations wiseOperationswithOutexpliitloops; 4)

Python的数据分析中如何使用阵列?Python的数据分析中如何使用阵列?May 02, 2025 am 12:09 AM

Arresinpython,尤其是Throughnumpyandpandas,weessentialFordataAnalysis,offeringSpeedAndeffied.1)NumpyArseNable efflaysenable efficefliceHandlingAtaSetSetSetSetSetSetSetSetSetSetSetsetSetSetSetSetsopplexoperationslikemovingaverages.2)

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)