Python Mock-检查方法是否从另一个类调用?

时间:2018-06-19 14:23:21

标签: python python-3.x unit-testing python-mock

当这些方法来自不同的类时,如何检查该方法是否在另一个方法内调用?

如果他们来自同一个班级,我可以这样做:

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()

1 个答案:

答案 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
>>>