我正在使用 aiohttp 发出异步请求,并且我想测试我的代码。我想模拟 aiohttp.ClientSession 发送的请求。我正在寻找类似于响应处理模拟requests
库的方式的东西。
我怎样才能模拟出做出的回应aiohttp.ClientSession
?
# sample method
async def get_resource(self, session):
async with aiohttp.ClientSession() as session:
response = await self.session.get("some-external-api.com/resource")
if response.status == 200:
result = await response.json()
return result
return {...}
# I want to do something like ...
aiohttp_responses.add(
method='GET',
url="some-external-api.com/resource",
status=200,
json={"message": "this worked"}
)
async def test_get_resource(self):
result = await get_resource()
assert result == {"message": "this worked"}
- 我已通读aiohttp 测试文档。似乎它们涵盖了模拟对您的 Web 服务器的传入请求,但我不确定这是否有助于我模拟对传出请求的响应
编辑
我在几个项目中使用了https://github.com/pnuckowski/aioresponses,它非常适合我的需求。