[英]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.