当这些方法来自不同的类时,如何检查该方法是否在另一个方法内调用?
如果他们来自同一个班级,我可以这样做:
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
来自不同的类,那么它将引起AssertionError
未被调用。
如果要使用这些类,我又该如何做同样的检查(我想检查method_b
是否调用method_a
)?
class A():
def method_a(self):
pass
class B():
def method_b(self):
A().method_a()
答案 0 :(得分:1)
您只需要在与A
相同的上下文中对B
进行存根,并根据其调用方式进行验证。示例:
>>> 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
>>>