[英]Unable to mock a function in Python (Django)
我正在嘗試模擬我正在測試的函數中使用的一個函數,但由於某種原因,我沒有看到原始函數總是在運行,而不是我作為模擬創建的函數。
我正在測試的代碼具有這種類型的設置:
def function_being_tested(foo):
...
function_i_want_to_mock(bar)
...
def function_i_want_to_mock(bar)
print("Inside original function")
...
我已經安裝了 Mock 並嘗試使用 unittest.mock 補丁
目前測試文件使用這個設置:
import mock
from django.test import TestCase
def mock_function_i_want_to_mock(bar):
print(bar)
return True
class SupportFunctionsTestCases(TestCase):
@mock.patch("path.to.function.function_i_want_to_mock", mock_function_i_want_to_mock)
def test_function_being_tested(self):
# setup
result = function_being_tested(test_foo)
self.assertEqual(result, expected_result)
然后發生的是,當我運行測試時,我總是得到:“在原始函數內部”,而不是打印的參數,所以它總是在運行原始函數。
我之前使用過這個確切的設置並且它有效,所以我不確定是什么導致了這個。 可能是一些錯誤的設置...
如果有人有不同的方式來做這件事或發現一些錯誤,我們將不勝感激。
"path.to.function.function_i_want_to_mock"
應該是使用函數的路徑,而不是定義。
所以,如果function_i_want_to_mock
被定義moduleA.py
但進口和使用moduleB.py
您正在測試,那么你應該使用@mock.patch("path.to.moduleB.function_i_want_to_mock", ...)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.