模拟测试 - 测试方法是否被调用而不指定参数

8
我将使用Mock库模拟Django的send_mail函数:

我将使用Mock库模拟Django的send_mail函数:

from django.core.mail import send_mail
send_mail = Mock()

当我想要断言send_mail被调用时,我的问题就出现了。我不能使用assert_called_with或相关方法,因为它们期望参数,而我在测试环境中不完全知道/不想打出(它涉及模板)。我只想知道该方法已被调用。打印语句清楚地表明它已被调用,但如果我尝试这样做:

self.assertEqual(send_mail.called, True) 

我遇到了一个错误,因为调用的属性仍然为False。如何测试方法是否被调用而不必指定属性。

1个回答

6

您没有正确模拟send_mail方法。 您只在自己的模块中重新绑定了名称,而不是其他任何地方。

这将是一个正确的重新绑定:

from django.core import mail
mail.send_mail = Mock()

但使用patch()上下文管理器 / 装饰器更容易:

with patch('django.core.mail.send_mail') as mocked_send_mail:
    # run your tests
    self.assertTrue(mocked_send_mail.called)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接