我有一个用 Uvicorn + FastAPI 编写的 REST-API 应用程序
我想使用 PyTest 进行测试。
我想在开始测试时在夹具中启动服务器,因此当测试完成时,夹具将终止应用程序。
FastAPI 测试 展示了如何测试 API 应用程序,
from fastapi import FastAPI
from starlette.testclient import TestClient
app = FastAPI()
@app.get("/")
async def read_main():
return {"msg": "Hello World"}
client = TestClient(app)
def test_read_main():
response = client.get("/")
assert response.status_code == 200
assert response.json() == {"msg": "Hello World"}
这不会以通常的方式使服务器联机。似乎由 client.get 命令触发的特定功能是唯一运行的东西。
我找到了这些额外的资源,但我无法让它们为我工作:
https://medium.com/@hmajid2301/pytest-with-background-thread-fixtures-f0dc34ee3c46
您将如何从 PyTest 运行 Uvicorn+FastAPI 应用程序,使其随着测试上下波动?
原文由 RaamEE 发布,翻译遵循 CC BY-SA 4.0 许可协议
灵感来自@Gabriel C 的回答。完全面向对象的异步方法(使用优秀的异步测试框架)。