FastAPI(61)- 异步测试

简介: FastAPI(61)- 异步测试

前言


  • 前面讲解了通过 pytest 进行单元测试,是针对同步函数的:https://www.cnblogs.com/poloyy/p/15354901.html
  • 但它无法再 pytest 中测试或运行任何异步函数
  • 能够在测试中使用异步函数可能很有用
  • 例如,当异步查询数据库时,假设想要测试向 FastAPI 应用程序发送请求,然后验证后端是否成功在数据库中写入了正确的数据,同时使用异步数据库

 

FastAPI 代码


from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
    return {"message": "Tomato"}


单元测试代码


需要先安装

pip install httpx

pip install trio

pip install anyio

 

测试代码

import pytest
from httpx import AsyncClient
from .main import app
@pytest.mark.anyio
async def test_root():
    async with AsyncClient(app=app, base_url="http://test") as ac:
        response = await ac.get("/")
    assert response.status_code == 200
    assert response.json() == {"message": "Tomato"}


httpx

  • 即使 FastAPI 应用程序使用普通 def 函数而不是 async def,它仍然是一个异步应用程序
  • TestClient 在内部使用标准 pytest 在正常 def 测试函数中调用异步 FastAPI 应用程序做了一些魔术
  • 但是当在异步函数中使用调用异步 FastAPI 应用程序时,这种魔法就不再起作用了
  • 通过异步运行测试用例,不能再在测试函数中使用 TestClient,此时有一个不错的替代方案,称为 HTTPX
  • HTTPX 是 Python 3 的 HTTP 客户端,它允许像使用 TestClient 一样查询 FastAPI 应用程序
  • HTTPX 的 API 和 requests 库几乎相同
  • 重要的区别:用 HTTPX 不仅限于同步,还可以发出异步请求

 

@pytest.mark.anyio

告诉 pytest 这个测试函数应该异步调用

 

AsyncClient

  • 通过使用 FastAPI app 创建一个 AsyncClient,并使用 await 向它发送异步请求
  • 需要搭配 async/await 一起使用
相关文章
|
7月前
|
JSON API 数据格式
FastApi的搭建与测试
FastApi的搭建与测试
128 0
|
API 数据库
FastAPI(63)- Concurrency and async / await 并发、异步/等待
FastAPI(63)- Concurrency and async / await 并发、异步/等待
593 0
|
12月前
|
JSON 数据安全/隐私保护 数据格式
python fastapi 入门教程,每个案例都使用postman进行测试写的接口
python fastapi 入门教程,每个案例都使用postman进行测试写的接口
|
12月前
|
网络安全 Windows
基于fastapi实现6个接口(token拦截, 2个业务流程,接口参数依赖校验)已经通过postman测试,记录部署服务器和windows,用于pytest接口自动化框架的接口测试对象
基于fastapi实现6个接口(token拦截, 2个业务流程,接口参数依赖校验)已经通过postman测试,记录部署服务器和windows,用于pytest接口自动化框架的接口测试对象
|
JSON 前端开发 JavaScript
fastapi高性能异步框架,极速上手
fastapi高性能异步框架,极速上手
|
SQL 存储 关系型数据库
PostgreSQL 流复制搭建主从环境,同步和异步的解释,压力测试,主从角色切换|学习笔记
快速学习PostgreSQL 流复制搭建主从环境,同步和异步的解释,压力测试,主从角色切换
757 0
PostgreSQL 流复制搭建主从环境,同步和异步的解释,压力测试,主从角色切换|学习笔记
|
消息中间件 Java 测试技术
【测试基础】九、如何做 API 测试?异步的呢?
【测试基础】九、如何做 API 测试?异步的呢?
【测试基础】九、如何做 API 测试?异步的呢?
|
前端开发 JavaScript 测试技术
[TDD] 如何测试 React 异步组件?
前言 本文承接上文 如何测试驱动开发 React 组件?,这次我将继续使用 @testing-library/react 来测试我们的 React 应用,并简要简要说明如何测试异步组件。
106 0
|
SQL 缓存 关系型数据库
|
JSON 测试技术 数据格式
FastAPI(60)- 针对 WebSocket 进行单元测试
FastAPI(60)- 针对 WebSocket 进行单元测试
230 0
FastAPI(60)- 针对 WebSocket 进行单元测试

热门文章

最新文章