首页 > 解决方案 > 如何“忽略”使用 Python-Mockito 的方法?

问题描述

我是单元测试和 mockito 库的新手,我试图弄清楚如何在方法调用中“跳过”或“忽略”类实例化。我有一些看起来像这样的代码:

def main(args):
  ...
  ...
  notify = Notify(some_variables)
  ...
  try:
    ...
    ...
  except Exceptions as err:
    notify.alert(some_variables)

我尝试像这样模拟这种方法:

notice_mock = mock()
when(notify).Notify(some_variables).thenReturn(notice_mock)

但是,它仍然实例化了该类,并且由于该类中的其他方法调用而引发错误。我是否误解了 mock() 的功能?有没有办法忽略这个方法?

标签: pythonunit-testingmockito

解决方案


这是一个关于“在哪里”模拟的问题。被测代码Notify(...)def main. 假设您可能在一个文件中有这个foo.py

在测试期间,您实际上是在模拟notify.Notify(...)( when(<object/container>).<name/member>(...)),但被测代码使用 foo.Notify.

您可能在测试文件中有import foo as system_under_test一行或类似的内容。然后一个when(system_under_test).Notify(...)应该做补丁。


推荐阅读