1

代码:

class SomeClass(BaseClass):
    async def async_method(arg1, arg2, **kwargs):
        await self.foo.bar(arg1=arg1, arg2=arg2).baz(**kwargs)

使用的测试之一:

@pytest.fixture
def same_class():
    return SameClass()


async def test_async_method(some_class: SomeClass):
    arg1_mock = 1
    arg2_mock = 2
    some_class.foo.bar = AsyncMock()
    some_class.foo.bar.baz = AsyncMock()
    
    await some_class.async_method(arg1=arg1_mock, arg2=arg2_moc)
    
    some_class.foo.bar.assert_called_once()

我收到一个错误:

AttributeError: 'coroutine' object has no attribute 'baz'

如何向 AsyncMock 添加异步属性方法?任何帮助

4

1 回答 1

1

文档_AsyncMock

AsyncMock对象将运行,因此该对象被识别为异步函数,并且调用的结果是可等待的。

在您的代码中,bar是返回可等待对象的异步函数。要使可等待返回具有baz属性的内容,请将其设置为返回值。

some_class.foo.bar = AsyncMock()
some_class.foo.bar.return_value.baz = AsyncMock()
于 2022-01-19T22:22:39.737 回答