Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 模拟-测试是否在不指定参数的情况下调用方法_Python_Django_Unit Testing_Mocking - Fatal编程技术网

Python 模拟-测试是否在不指定参数的情况下调用方法

Python 模拟-测试是否在不指定参数的情况下调用方法,python,django,unit-testing,mocking,Python,Django,Unit Testing,Mocking,我正在使用模拟库模拟Django的send_mail函数: from django.core.mail import send_mail send_mail = Mock() 当我想断言调用了send_mail时,问题就出现了。我不能将assert_与或相关方法一起使用,因为它们需要参数,我不完全知道/不想在测试环境中键入参数(涉及模板)。我只想知道该方法已被调用。打印语句清楚地表明它被调用,但如果我尝试以下方法: self.assertEqual(send_mail.called, True

我正在使用模拟库模拟Django的send_mail函数:

from django.core.mail import send_mail
send_mail = Mock()
当我想断言调用了send_mail时,问题就出现了。我不能将assert_与或相关方法一起使用,因为它们需要参数,我不完全知道/不想在测试环境中键入参数(涉及模板)。我只想知道该方法已被调用。打印语句清楚地表明它被调用,但如果我尝试以下方法:

self.assertEqual(send_mail.called, True) 

我得到一个错误,因为调用的属性仍然为False。如何在不必指定属性的情况下测试是否调用了方法

您没有正确模拟
send\u mail
方法。您只在自己的模块中恢复名称,而不是在其他任何地方

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

from django.core import mail
mail.send_mail = Mock()
但更容易使用:

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