访问了模拟实例上的断言属性

got*_*nes 13 python unit-testing mocking

如何断言a Mock和/或a 上的属性MagicMock被访问?

例如,

from unittest.mock import MagicMock

def foo(x):
    a = x.value

m = MagicMock()
foo(m)
m.attr_accessed('value')    # method that does not exist but I wish did; should return True
Run Code Online (Sandbox Code Playgroud)

检查foo试图访问的实际方法是什么m.value

小智 13

您可以使用此处所述的PropertyMock .

例如,

from unittest.mock import MagicMock, PropertyMock

def foo(x):
    a = x.value

m = MagicMock()
p = PropertyMock()
type(m).value = p
foo(m)
p.assert_called_once_with()
Run Code Online (Sandbox Code Playgroud)