[英]Django mocks not working as expected
我在为django模拟苦苦挣扎; 我什至简化了单元测试,但测试仍然失败。 我想验证是否调用了一个方法(即使带有任何参数),但是“ assert_drawn_once_with”始终返回False。 目前,我正在尝试:
@patch('utils.make_reset_password')
def test_shouldHaveCalledMakeResetToken(self, mocked):
user = User.get(...)
make_reset_password(user)
mocked.assert_called_once_with(user)
即使这个简单的示例也失败了:
AssertionError: Expected 'make_reset_password' to be called once. Called 0 times
这怎么可能? 我究竟做错了什么?
提前致谢
您必须使用utils
完整路径,例如@patch('my_app.utils.make_reset_password')
,然后在测试中调用一个调用make_reset_password
的函数。
@patch('my_app.utils.make_reset_password')
def test_shouldHaveCalledMakeResetToken(self, mock_make_reset_password):
user = User.get(...)
function_under_test(user)
mock_make_reset_password.assert_called_once_with(user)
编辑
我想到的另一件事是您没有嘲笑正确的功能。 如果make_reset_password
是从另一个模块中的utils
导入的,则需要更改@patch
装饰器中的路径。
例如
# my_module.py
from my_app.utils import make_reset_password
def run_make_reset_password(user):
make_reset_password(user)
# tests.py
@patch('my_app.my_module.make_reset_password')
def test_shouldHaveCalledMakeResetToken(self, mock_make_reset_password):
user = User.get(...)
run_make_reset_password(user)
mock_make_reset_password.assert_called_once_with(user)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.