【发布时间】:2016-08-14 12:25:08
【问题描述】:
我编写了函数send_formatted_email,它格式化电子邮件主题和消息,然后在单独的模块中调用send_email 函数。
现在我必须测试send_formatted_email 是否使用预期的参数调用send_email。为此,我尝试使用patch 模拟send_email,但它没有被模拟。
test.py
@patch('app.util.send_email')
def test_send_formatted_email(self, mock_send_email):
mock_send_email.return_value = True
response = send_formatted_email(self.comment, to_email)
mock_send_email.call_args_list
....
views.py
def send_formatted_email(comment, to_email):
...
message = comment.comment
subject = 'Comment posted'
from_email = comment.user.email
...
return send_email(subject, message, to_email, from_email)
util.py
def send_email(subject, message, to, from):
return requests.post(
...
)
我什至尝试过app.util.send_email = MagicMock(return_value=True),但这也没有用。知道我做错了什么吗?
【问题讨论】:
-
您修补函数使用的位置,而不是定义的位置。试试
@patch('app.views.send_email') -
@jonrsharpe 谢谢你成功了。
-
根据您的回答,如果我导入模块而不是函数本身,我现在可以修补定义函数的位置。
标签: python python-2.7 python-unittest python-mock