To follow up on this question
For one API request, I was able to get this answer working for 1 API request using MagicMock below:
from unittest.mock import MagicMock
@pytest.mark.asyncio
async def test_download():
mock = aiohttp.ClientSession
mock.get = MagicMock()
mock.get.return_value.__aenter__.return_value.status = 200
mock.get.return_value.__aenter__.return_value.text.return_value = 'test content'
async with aiohttp.ClientSession() as session:
async with session.get('http://test.com') as response:
assert response.text() == 'test content'
How can I return multiple responses? For example, first API request returns 200, second API request returns 400.
I have tried many approaches and nothing has worked so far, including aioresponses library. Any help would be much appreciated
from unittest.mock import MagicMock
@pytest.mark.asyncio
async def test_download():
mock = aiohttp.ClientSession
mock.get = MagicMock()
# first API request
mock.get.return_value.__aenter__.return_value.status = 200
mock.get.return_value.__aenter__.return_value.text.return_value = 'test content'
# second API request
mock.get.return_value.__aenter__.return_value.status = 400
mock.get.return_value.__aenter__.return_value.text.return_value = 'bad test content'
async with aiohttp.ClientSession() as session:
async with session.get('http://test.com') as response:
assert response.text() == 'test content'