我正在尝试测试是否在测试内调用了我的函数,但是我得到了:
AttributeError:“函数”对象没有属性“ assert_drawn_once”
我没有嘲笑这个正确的方法,所以请您帮我弄清楚为什么我的模拟在这种情况下不起作用。我有模拟该功能的正确路径。
我已经尝试过-> create_autospec来解决AttributeError,但是没有运气。
代码示例:
class MyClass:
def __init__(self):
self._data = {}
def a(self, value):
self._data = value
@pytest.fixture
def my_fixture():
return MyClass()
@pytest.mark.asyncio
async def test_random_function(my_fixture, mocker):
s = mocker.patch('path.module.a',
my_fixture.a)
await random_function()
s.assert_called_once()
答案 0 :(得分:0)
my_fixture.a
是MyClass.a
函数,显然没有assert_called_once
。那是unittest.mock.Mock
和unittest.mock.MagicMock
中的method。我不知道为什么要用自己的对象修补path.module.a
,但我想您将很难获得MagicMock
提供的功能。在您的示例中,我将仅使用以下内容。
@pytest.mark.asyncio
async def test_random_function(my_fixture, mocker):
s = mocker.patch('path.module.a')
await random_function()
s.assert_called_once()