我有以下异步函数:
async def my_func(request):
# preparation code here
with aiohttp.ClientSession() as s:
with s.post(url, headers) as response:
status_code = response.status
if status_code == 200:
json_resp = await response.json()
elif:
# more checks
试着测试,但还是没有找到方法
from asynctest.mock import CoroutineMock, MagicMock as AsyncMagicMock
@mock.patch("path_to_function.aiohttp.ClientSession", new_callable=AsyncMagicMock) # this is unittest.mock
def test_async_function(self, mocked_session):
s = AsyncMagicMock()
mocked_client_session().__aenter__ = CoroutineMock(side_effect=s)
session_post = s.post()
response_mock = AsyncMagicMock()
session_post.__aenter__ = CoroutineMock(side_effect=response_mock)
response_mock.status = 200
但不是像我想的那样工作。任何关于如何测试上下文管理器的帮助都将不胜感激
愚蠢的我,找到了解决办法。我用的是
side_effect
而不是return_value
。很有魅力。非常感谢相关问题 更多 >
编程相关推荐