所以,主要問題在標題上。我試圖找出python mock模塊是否使用依賴注入模式來模擬對象調用是否正確。python模擬模塊是否通過依賴注入工作?
我不熟悉DI模式,但是從我讀過的和我在調試器中看到的mock
模塊發行版看起來像mock()使用DI。
我是對的,模擬()是DI還是我錯過了這種模式和嘲諷?
所以,主要問題在標題上。我試圖找出python mock模塊是否使用依賴注入模式來模擬對象調用是否正確。python模擬模塊是否通過依賴注入工作?
我不熟悉DI模式,但是從我讀過的和我在調試器中看到的mock
模塊發行版看起來像mock()使用DI。
我是對的,模擬()是DI還是我錯過了這種模式和嘲諷?
mock
模塊不使用依賴注入。
mock
用自定義的替換一些對象。
要使用依賴注入,必須有一些頂級進程,它將搜索要調用的函數,檢測到的參數傳遞給它們,實例化它們並最終進行調用。
mock
只修改對象,並且按照慣例完成對這個對象的調用 - 直接調用該對象。
如果你想找到依賴注入的例子,請檢查pytest
及其固定裝置 - 它們使用它很多,使用它很有趣。
我想你主要關心的是用unittest.mock.patch
來嘲諷一個對象的屬性。
patch
是一個函數,它只是返回類unittest.mock._patch
的一個實例。 _patch
是一個上下文管理器,它通過__enter__
monkeypatches屬性,並在__exit__
上修改它。
謝謝!那麼,看起來像模擬使用了一些「monkeypatching」方法? – Paul
@保羅是的,你是對的。 –