Я пытаюсь установить возвращаемое значение для функции, которая является асинхронной.Это класс:
class Cache:
def __init__(self) -> None:
self.host = None
self.port = None
self.r = Redis()
async def init(self) -> bool:
"""Init redis pool"""
if not await self.r.ping():
self.host = config.CACHE_HOST
self.port = config.CACHE_PORT
await self.r.init(host=self.host, port=self.port)
return False
return True
Также у меня есть класс, который управляет этим классом, и это класс:
class Adserver:
async def init(self):
cache_ok = await self.cache.init() //I want this mock
return cache_ok
Unittest:
@patch('aioads.storage.cache.Cache')
def test_cache_ok_true(self, fake_cache):
fake_cache.init.return_value = True
async def run_test():
a = self.adserver.cache
print(a) //Cache instance not MagicMock
output = await self.adserver.init() //Return false, it should be True
self.assertEqual(output, True)
self.loop.run_until_complete(run_test())
Почемуfake_cache не изменяет значение кэша init в классе aioads?