如何解决我可以让asyncio.sleep睡眠一年吗?
我想让asyncio.sleep()
睡一年。
类似这样的东西:
async def run():
# first print
print('hi')
# wait a year
await asyncio.sleep(31536000)
# second print
print('hi after a year')
我显然不能等待一年来进行测试,但是理论上可以做到吗?
解决方法
您还可以通过编写单元测试并模拟协同程序来对此进行测试。
# file1.py
async def run(seconds):
# first print
print('hi')
# wait a year
await asyncio.sleep(seconds)
# second print
print('hi after a year')
# test_file1.py
import asyncio
from unittest import mock
from unittest.mock import patch
import pytest
import file1
class AsyncMock(mock.MagicMock):
async def __call__(self,*args,**kwargs):
return super(AsyncMock,self).__call__(*args,**kwargs)
class TestAsyncioSleep:
@patch('file1.run',new_callable=AsyncMock)
def test_fun(self,sleep_mock):
event_loop = asyncio.get_event_loop()
task = event_loop.run_until_complete(so_async.run(31536000))
sleep_mock.assert_called_with(31536000)
我正在使用AsyncMock()类嘲笑asyncio.sleep。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。