我正在与django mock挣扎;我甚至简化了单元测试,但测试仍然失败。我想验证一个方法是否被调用(即使使用任何参数),但“assert_called_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
这怎么可能?我做错了什么?
提前致谢
答案 0 :(得分:1)
您必须使用Chrome 65.0.3325 (Mac OS X 10.13.3): Executed 1 of 1 SUCCESS (0.034 secs / 0.011 secs)
TOTAL: 1 SUCCESS
的完整路径,例如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