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并测试异步函数的行为。

相关内容

热门资讯

wepoke智能ai!wpk有... wepoke智能ai!wpk有规则吗,微扑克ai辅助会封号,插件教程(有挂技巧)是一款可以让一直输的...
wpk有辅助挂!wepoke用... wpk有辅助挂!wepoke用模拟器,wepoke辅助器真的有用,透牌教程(有挂攻略)1、金币登录送...
微扑克德州专用辅助器!aapo... 微扑克德州专用辅助器!aapoker辅助软件,微扑克有挂,靠谱教程(有挂透明)是一款可以让一直输的玩...
wepokeai代打的胜率!a... wepokeai代打的胜率!aapoker钻石代理有挂的,wopoker分析器,科技教程(有挂了解)...
aapoker辅助工具存在!微... aapoker辅助工具存在!微扑克俱乐部设置,德扑线上有机器人,黑科技教程(有挂教学);无聊就玩这款...
wepoke辅助技巧!aapo... wepoke辅助技巧!aapoker有外挂吗,德扑ai代打,黑科技教程(有挂总结)1.wepoke辅...
德扑数据软件!poker辅助软... 德扑数据软件!poker辅助软件,德扑ai代打,wpk教程(有挂黑科技)1、超多福利:超高返利,海量...
微扑克辅助机器人!wpk数据清... 微扑克辅助机器人!wpk数据清零,aa扑克有有规律,AI教程(有挂教学)(1)微扑克辅助机器人!wp...
德扑之星猫腻!wpk辅助器小程... 德扑之星猫腻!wpk辅助器小程序,德州wpk辅助真的,高科技教程(有挂了解)1.德扑之星猫腻 ai辅...
wepokeai代打!gove... wepokeai代打!governorofpoker3辅助,德州ai辅助app,新版2025教程(有...