I am using aiohttp to make asynchronous requests and I want to test my code. I want to mock out requests sent by aiohttp.ClientSession. I am looking for something similar to the way responses handles mocking for the requests
lib.
How can I mock out responses made by 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"}
- I have read through the aiohttp testing docs. It seems they cover mocking out incoming requests to your web server, but I'm not sure this helps me mock out responses to outgoing requests
Edit
I've used https://github.com/pnuckowski/aioresponses on a few projects and it has worked well for my needs.