我想模擬某個模塊以測試使用該模塊的一段代碼。Python:嘲笑我正在測試的模塊正在使用的模塊
也就是說,我有一個模塊my_module
,我想測試。 my_module
引入外部模塊real_thing
,並呼籲real_thing.compute_something()
:
#my_module
import real_thing
def my_function():
return real_thing.compute_something()
我需要模擬real_thing
,這樣在測試它會像fake_thing
,我已經創建了一個模塊:
#fake_thing
def compute_something():
return fake_value
測試調用my_module.my_function()
這就要求real_thing.compute_something()
:
#test_my_module
import my_module
def test_my_function():
assert_something(my_module.my_function())
我要補充什麼的測試代碼以便my_function()
將在測試內部調用fake_thing.compute_something()
而不是real_thing.compute_something()
?
我想弄清楚如何與Mock做到這一點,但我沒有。
如何把'進口fake_thing爲real_thing'在您的測試文件的頂部? –
我總是發現嘲笑一個模塊的最簡單方法就是直接指向它,並大喊:「哈哈,你是一個模塊!」 –
@David:這不能解決它。測試執行'my_module.my_function()','my_module'不知道它是從測試中調用的。 'my_module'導入'real_thing',因此'real_thing.compute_something()'將被執行,而不管測試模塊中實際導入了哪些模塊。 – snakile