簡體   English   中英

Python Mock-檢查方法是否從另一個類調用?

[英]Python Mock - check if method was called from another 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來自不同的類,那么它將引發AssertionError而不被調用。

我該如何做同樣的檢查,是否需要這些類(並且我想檢查method_b調用method_a )?

class A():
  def method_a(self):
    pass

class B():
  def method_b(self):
    A().method_a()

您只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
>>> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM