AsyncMock协程实际上从不放弃控制?
创始人
2024-09-21 08:00:23
0

这个问题是由于在使用AsyncMock来模拟asyncio协程时,可能会遇到异步函数实际上没有yield控制的情况。这可能在使用AsyncMock的时候导致一些不正确的测试结果。一个解决方法是使用mock.MagicMock对象作为异步函数的替代,这个对象可以模拟异步函数的行为并正确使用yield控制。下面是一个示例:

import asyncio
from unittest import mock

async def my_async_function():
    print("Before yield")
    await asyncio.sleep(1)
    print("After yield")

async def my_test_function():
    await my_async_function()

@mock.patch("mymodule.my_async_function", new_callable=mock.MagicMock)
def test_async_function(mock_async_function):
    mock_async_function.return_value = asyncio.ensure_future(my_test_function())
    loop = asyncio.get_event_loop()
    loop.run_until_complete(my_test_function())

test_async_function()

在这个示例中,我们使用@mock.patch修饰器来替换my_async_function的行为,将其替换成一个mock.MagicMock对象。然后我们将mock_async_function.return_value设置为一个asyncio.ensure_future对象,并将其传递给my_test_function中的await表达式。最后,我们使用asyncio.get_event_loop()来运行my_test_function并测试异步函数的行为。

相关内容

热门资讯

实操分享!欢乐联盟卡五星辅助,... 实操分享!欢乐联盟卡五星辅助,九酷互娱辅助,系统教程(详细教程)-哔哩哔哩>>您好:软件加薇1367...
必看攻略!欢乐茶馆修改器,九九... 欢乐茶馆修改器是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可以加我微信...
攻略讲解!多乐辅助下载,aap... 大家好,今天小编来为大家解答多乐辅助下载这个问题咨询软件客服可以免费测试直接加微信(13670430...
一起来讨论!福建天庭啊开心辅助... 较多好评“微乐万能挂官网”开挂(透视)辅助教程 了解更多开挂安装加(136704302)微信号是一款...
实测发现!小程序游戏修改器辅助... 较多好评“微乐万能挂官网”开挂(透视)辅助教程 了解更多开挂安装加(136704302)微信号是一款...
终于知道!创思维激k软件助手,... 终于知道!创思维激k软件助手,衢州都莱辅助软件,解说技巧(有挂细节)-哔哩哔哩【无需打开直接搜索加薇...
交流学习经验!广东雀神麻雀辅助... 交流学习经验!广东雀神麻雀辅助神器,爱来大菠萝怎么玩,新2026教程(有挂透明挂)-哔哩哔哩【无需打...
重大通报!wepoker辅助器... 重大通报!wepoker辅助器,八闽福建辅助,可靠技巧(有挂工具)-哔哩哔哩;无需打开直接搜索打开薇...
盘点一款!边锋小程序辅助免费,... 您好:这款边锋小程序辅助免费游戏是可以开挂的,确实是有挂的,很多玩家在这款边锋小程序辅助免费游戏中打...
实测教程!微乐四川亲友圈辅助器... 实测教程!微乐四川亲友圈辅助器,新天道辅助软件,揭秘攻略(有挂功能)-哔哩哔哩;打开点击测试直接进入...