【问题标题】:Python Mock - check if method was called from another class?Python Mock - 检查是否从另一个类调用方法?
【发布时间】:2018-06-19 14:23:21
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    您必须在与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
    >>> 
    

    【讨论】:

    • 谢谢,这真的很简单。
    猜你喜欢
    • 2016-11-16
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    相关资源
    最近更新 更多