首页
学习
活动
专区
圈层
工具
发布

FastAPI(60)- 针对 WebSocket 进行单元测试

前言 还是比较简单的,直接写代码啦 FastAPI 的单元测试:https://www.cnblogs.com/poloyy/p/15354901.html 直接上代码 #!.../ # time: 2021/10/7 9:05 下午 # file: 51_test_websocket.py """ from fastapi import FastAPI from fastapi.testclient...import TestClient from fastapi.websockets import WebSocket app = FastAPI() testClient = TestClient(...mode="binary" 通过二进制数据帧发送 JSON 接收数据的三种方法 .receive_text():等待应用程序发送的传入文本并返回它 .receive_bytes():等待应用程序发送的传入字节串并返回它....receive_json(mode="text"):等待应用程序发送的传入 json 数据并返回它,使用 mode="binary" 通过二进制数据帧发送 JSON 可能会引发 starlette.websockets.WebSocketDisconnect

1.2K30

FastAPI(43)- 基于 pytest + requests 进行单元测试

FastAPI 的单元测试 对于服务端来说,通常会对功能进行单元测试,也称白盒测试 FastAPI 集成了第三方库,让我们可以快捷的编写单元测试 FastAPI 的单元测试是基于 Pytest + Request...{"msg": "Hello World"} # 声明一个 TestClient,把 FastAPI() 实例对象传进去 client = TestClient(app) # 测试用 def...的源码解析 继承了 requests 库的 Session 所以可以像使用 requests 库一样使用 TestClient,拥有 requests 所有方法、属性 重写了 Session.requests...语句来调用上下文管理器哦 .get() 方法 上面代码 client.get(),直接调用的就是 Session 提供的 get() 方法啦! 复杂的测试场景 服务端 #!...{"msg": "Hello World"} # 声明一个 TestClient,把 FastAPI() 实例对象传进去 client = TestClient(app) # 测试用 def

2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    FastAPI 学习之路(四十七)WebSockets(四)接口测试

    前言 上一篇我们分享了FastAPI 学习之路(四十六)WebSockets(三)登录后才可以聊天,那么我们这次看下WebSockets接口怎么测试?...正文 在我们测试中,肯定会对接口进行测试。之前也分享过FastAPI 学习之路(三十八)对开发接口进行测试。那么我们针对WebSockets接口怎么测试呢。...from fastapi.testclient import TestClient def test_websocket(): client = TestClient(app) with...这个错误,主要是我们在最后的时候没有释放链接,我们可以在代码中链接接受到消息后,返回完毕关闭,或者说我们单元测试的时候关闭连接....,我们可以利用这个方式对于我们已经开发的接口进行单元测试。

    1.1K20

    Claude Code Python开发子代理深度实战:构建你的Python全栈专家

    专精Django/FastAPI Web开发、数据处理和自动化。在Python项目和性能优化时主动使用。...虚拟环境隔离和依赖版本锁定 ## 代码质量关注点 / Code Quality Focus - 遵循SOLID原则的清晰可读代码 - 遵循Google/NumPy风格的完整文档字符串 - 使用pytest...实现>90%的测试覆盖率 - 性能基准测试和内存分析 - 使用bandit和safety进行安全扫描 - 使用black和isort自动格式化代码 - 使用ruff进行代码检查,mypy进行类型检查 -...import pytest from fastapi.testclient import TestClient from sqlalchemy import create_engine from sqlalchemy.orm...子代理的核心价值 这个Python开发子代理带来的价值: Pythonic代码:真正符合Python哲学的代码 性能保障:默认使用最优算法和数据结构 工程化:完整的测试、文档、部署方案 安全性:自动处理常见安全问题

    45010

    FastAPI 学习之路(三十八)对开发接口进行测试

    前言 我们之前分享分享使用FastAPI 学习之路(三十八)Static Files,这次我们分享的是开发接口的测试。 正文 对于开发好的接口需要进行测试之后次才能发布。...当我们在开发的时候,没有提测前,我们也要对我们自己的接口进行测试,那么FastAPI 自身也带了针对开发的接口的测试的。我们看下FastAPI官方给我们了什么样的支持呢。...from fastapi import FastAPI from fastapi.testclient import TestClient from routers.user import usersRouter...from fastapi import FastAPI from fastapi.testclient import TestClient from routers.user import usersRouter...改造后的测试文件 from main import app import unittest from fastapi.testclient import TestClient class FastApiTest

    1.4K10

    FastAPI(61)- 异步测试

    能够在测试中使用异步函数可能很有用 例如,当异步查询数据库时,假设想要测试向 FastAPI 应用程序发送请求,然后验证后端是否成功在数据库中写入了正确的数据,同时使用异步数据库 FastAPI 代码...: "Tomato"} 单元测试代码 需要先安装 pip install httpx pip install trio pip install anyio 测试代码 import pytest from...应用程序使用普通 def 函数而不是 async def,它仍然是一个异步应用程序 TestClient 在内部使用标准 pytest 在正常 def 测试函数中调用异步 FastAPI 应用程序做了一些魔术...但是当在异步函数中使用调用异步 FastAPI 应用程序时,这种魔法就不再起作用了 通过异步运行测试用例,不能再在测试函数中使用 TestClient,此时有一个不错的替代方案,称为 HTTPX HTTPX...是 Python 3 的 HTTP 客户端,它允许像使用 TestClient 一样查询 FastAPI 应用程序 HTTPX 的 API 和 requests 库几乎相同 重要的区别:用 HTTPX

    1K10

    FastAPI(64)- Settings and Environment Variables 配置项和环境变量

    from fastapi.testclient import TestClient from .config import Settings from .main import app, get_settings...Settings 对象,而是返回与第一次调用时返回的相同对象 lru_cache 技术细节 @lru_cache() 修改它修饰的函数返回与第一次返回相同的值,而不是再次执行函数内部代码 因此,它下面的函数将针对每个参数组合执行一次...然后,每当使用完全相同的参数组合调用函数时,每个参数组合返回相同的值将一次又一次地使用 在请求依赖项 get_settings() 的情况下,该函数没有参数,所以它总是返回相同的值 这样,它的行为就好像它只是一个全局变量...但是因为它使用了一个依赖函数,所以可以很容易地覆盖它进行测试 @lru_cache() 是 functools 的一部分,它是 Python 标准库的一部分 使用 @lru_cache() 可以避免为每个请求一次又一次地读取...Rick 使用完全相同的参数调用函数时,直接返回结果而不会执行厘米的代码 原理图

    2.7K30

    FastAPI 之自动化测试数据库接口

    今天的文章分享如下在 FastAPI 框架下,使用 pytest 来自动化测试数据库相关的接口,文章的最后给出全部代码。...最近越来越喜欢使用 FastAPI 来写后端服务了,因为它是 Python 领域性能最好的 Web 框架,它专注于提供高性能的 Web API,其他方面并不限制你的手脚,可以随意使用你喜欢的三方库,这点类似于...配置代码在测试用例运行之前运行,销毁代码在测试用例运行之后执行。function 是 fixture 参数的默认值。...至于为什么放在 conftest.py中,请查阅 pytest 文档,这里不展开, 接下来,利用这些 fixture,编写单元测试用例,一个示例如下: from fastapi.testclient...最后的话 本文分享了如下在 FastAPI 框架下,使用 pytest 来自动化测试数据库相关的接口,希望对你的单元测试技能有所帮助。如果有帮助,请点点赞、在看、关注支持。

    1.6K20

    FastAPI 实用教程:构建高性能 Python Web API 的终极指南

    本文为原创实战教程,涵盖 FastAPI 核心特性、路由设计、数据验证、数据库集成、认证授权、测试部署全流程,4000+字助你快速掌握现代 Python Web 开发利器。...开发效率翻倍:自动生成 OpenAPI 文档、代码补全支持、直观的语法 类型提示革命:深度整合 Python 类型提示,减少 Bug 提高可读性 异步支持:原生支持 async/await...测试用例示例 # test_main.py import pytest from fastapi.testclient import TestClient from main import app client...engine = create_async_engine(DATABASE_URL) 十一、常见问题解决方案 问题1:依赖项复杂导致代码臃肿 # 使用依赖注入解耦 def get_db(): with...、容器化部署方案、监控集成 实战建议: 大型项目使用 APIRouter 模块化组织代码 生产环境使用 Gunicorn + Uvicorn Worker 重要接口实现速率限制(

    1.5K10

    FastAPI(27)- Handling Errors 处理错误

    (状态码和响应信息)返回给客户端,需要使用 HTTPException HTTPException 是一个普通的 exception,包含和 API 相关的附加数据 因为是一个 Python exception...FastAPI 全局处理此异常 可以使用 添加自定义异常处理程序 @app.exception_handler() 实际代码 #!...有一些默认的异常处理程序 比如:当引发 HTTPException 并且请求包含无效数据时,异常处理程序负责返回默认的 JSON 响应 可以使用自己的异常处理程序覆盖(重写)这些默认的异常处理程序 重写...,它还包括一个默认的异常处理程序 实际代码 # 需要先导入对应的异常类 from fastapi.exceptions import RequestValidationError from fastapi.responses...) 使用 RequestValidationError 的 body 属性 RequestValidationError 包含它收到的带有无效数据的正文,可以在开发应用程序时使用它来记录主体并调试它,将其返回给用户

    1.4K10

    从 0 到 1 搭能维护 4 年的 Python 学生管理系统:FastAPI 项目结构、README、解耦全流程实战

    8000/redoc,使用 FastAPI 的 ReDoc 文档测试 API 接口。...:在app/目录下编写代码 测试代码:在tests/目录下编写测试代码,运行pytest命令测试代码 提交代码:使用 Git 提交代码到 GitHub 3....测试规范 每个模块都要写测试代码; 测试代码要覆盖所有的业务逻辑; 测试代码要使用 pytest 框架; 测试代码的文件名要使用test_前缀和对应的模块名组成; 测试函数的文件名要使用test_前缀和对应的函数名组成...日志管理的目标是记录项目的运行状态和错误信息,方便开发者排查问题和调试代码。...8.3 测试代码示例 打开conftest.py文件,输入以下代码: import pytest from fastapi.testclient import TestClient from sqlalchemy

    13510
    领券