[英]Python Mock Function and Import Mock
在我的測試文件中,我想模擬模塊中包含的輔助函數。 我能夠“成功”(即,由於所有內容均正確鏈接,因此沒有編譯或運行時錯誤)對函數進行模擬,但是模擬不會滴入要測試的類。
我已經研究了依賴注入,但是我不確定如何注入我的模塊,該模塊目前僅模擬了一個函數。 最終,我計划模擬幾乎所有功能。 我只想先獲得一個基准。
這是我到目前為止的
class FooTestCase(unittest.TestCase):
@mock.patch('modules.MyHelperModule.helper_function')
def test_simple(self, mock_hf):
my_obj = MyObj()
# internally, this class imports HelperModule
# and the method calls helper_function with 1
my_obj.do_something()
mock_hf.helper_function.assert_called_with(1)
return
assert命令失敗,並報告從未調用該方法。 我假設模擬永遠不會通過my_obj。
我知道我可以在MyObj的init方法中創建一個標志,例如testing = False並相應地導入模塊,但是如何導入僅在測試文件中模擬的模塊? 這是我現在正在考慮的方法,但是我願意接受其他獲得相同結果的實現。
為了回應Daniel Roseman的評論,
在MyOBJ中,我有以下幾行
from modules.HelperModule import helper_function
但是,我得到了錯誤
ImportError: No module named modules
我的接線現在看起來像
@mock.patch('MyObj.modules.HelperModule.helper_function')
任何幫助總是值得贊賞的; 謝謝!
我想問題是,您不是想對ock_hf進行修補。 嘗試:
from unittest.mock import patch
class FooTestCase(unittest.TestCase):
def test_simple(self):
with patch('modules.MyHelperModule.helper_function') as mock_hf:
my_obj = MyObj()
my_obj.do_something()
mock_hf.assert_called_with(1)
正如丹尼爾·羅斯曼(Daniel Roseman)在我的原始帖子中的評論中所提到的,問題出在我修補的位置。
我應該在修補MyObj.helper_function。 另外,我在init .py文件中有一個從MyObj導入MyObj的文件。 這使我只能在測試中引用MyObj類,但是我需要覆蓋整個文件的helper_function。 我必須刪除該行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.