代码之家  ›  专栏  ›  技术社区  ›  Andrius

python mock-check方法是否从另一个类调用?

  •  0
  • Andrius  · 技术社区  · 6 年前

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

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

    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 电话 方法A )?:

    class A():
      def method_a(self):
        pass
    
    class B():
      def method_b(self):
        A().method_a()
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   metatoaster    6 年前

    你只需要存根 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
    >>>