[Python] Python - object MagicMock can't be used in 'await' expression

Discussão em 'Python' iniciado por Stack, Maio 31, 2025.

  1. Stack

    Stack Membro Participativo

    When I was trying to mock an async function in unittest with MagicMock, I got this exception:


    TypeError: object MagicMock can't be used in 'await' expression
    ​

    With sample code like:

    # source code
    class Service:
    async def compute(self, x):
    return x

    class App:
    def __init__(self):
    self.service = Service()

    async def handle(self, x):
    return await self.service.compute(x)

    # test code
    import asyncio
    import unittest
    from unittest.mock import patch


    class TestApp(unittest.TestCase):
    @patch('__main__.Service')
    def test_handle(self, mock):
    loop = asyncio.get_event_loop()
    app = App()
    res = loop.run_until_complete(app.handle('foo'))
    app.service.compute.assert_called_with("foo")

    if __name__ == '__main__':
    unittest.main()


    How should I fix it with built-in python3 libraries?

    Continue reading...

Compartilhe esta Página