Python Mock - 检查是否从另一个 class 调用了方法?
Python Mock - check if method was called from another class?
当这些方法来自不同的 classes 时,如何检查是否在另一个方法中调用了方法?
如果他们来自同一个class,我可以这样做:
from unittest import mock
class A():
def method_a(self):
pass
def method_b(self):
self.method_a()
a = A()
a.method_a = mock.MagicMock()
a.method_b()
a.method_a.assert_called_once_with()
但是如果 method_a
来自不同的 class,那么它会引发 AssertionError
它没有被调用。
如果我要用这些 classes 来代替(我想检查 method_b
是否调用 method_a
),我怎么能做同样的检查?:
class A():
def method_a(self):
pass
class B():
def method_b(self):
A().method_a()
您必须简单地在与 B
相同的上下文中对 A
进行存根,并根据调用它的方式进行验证。示例:
>>> class B():
... def method_b(self):
... A().method_a()
...
>>> A = mock.MagicMock()
>>> A().method_a.called
False
>>> b = B()
>>> b.method_b()
>>> A().method_a.called
True
>>>
当这些方法来自不同的 classes 时,如何检查是否在另一个方法中调用了方法?
如果他们来自同一个class,我可以这样做:
from unittest import mock
class A():
def method_a(self):
pass
def method_b(self):
self.method_a()
a = A()
a.method_a = mock.MagicMock()
a.method_b()
a.method_a.assert_called_once_with()
但是如果 method_a
来自不同的 class,那么它会引发 AssertionError
它没有被调用。
如果我要用这些 classes 来代替(我想检查 method_b
是否调用 method_a
),我怎么能做同样的检查?:
class A():
def method_a(self):
pass
class B():
def method_b(self):
A().method_a()
您必须简单地在与 B
相同的上下文中对 A
进行存根,并根据调用它的方式进行验证。示例:
>>> class B():
... def method_b(self):
... A().method_a()
...
>>> A = mock.MagicMock()
>>> A().method_a.called
False
>>> b = B()
>>> b.method_b()
>>> A().method_a.called
True
>>>