我正在处理以下问题,我有一个类,我想模拟其补丁的异步方法:
class ExampleClass:
async def asy_method(self, param):
return await some_coroutine(self, param)
example_instance = ExampleClass()
我只想打补丁
await example_instance.asy_method('test_param')
通常我会用
mocker.patch('ExampleClass.asy_method', new_callable=AsyncMock)
其中,mocker是pytest-mock插件的固定装置,而AsyncMock具有以下形式
class AsyncMock(mock.MagicMock):
async def __call__(self, *args, **kwargs):
return super(AsyncMock, self).__call__(*args, **kwargs)
这会给我一个Mock对象,它在调用时的行为像协程。问题是,我想访问self传递给方法的属性。self仅在您进行设置的情况下才传递给模拟对象 autospec=True(另请参阅Python Doc,了解如何修补未绑定的方法),您不能与一起使用new_callable。
有谁知道如何解决这个问题?
眼眸繁星
相关分类