我有以下文件運行:如何嘲笑的一類,因此不會對進口
test_temp.py
:
import pytest
from mock import patch
with patch('temp.TheEvilClass'), patch('temp2.TheEvilClass'):
from temp import TempClass
def test_evil():
assert True
temp.py
:
from temp2 import TheEvilClass
class TempClass(object):
TheEvilClass()
temp2.py
:
class TheEvilClass(object):
print "I'm evil! ]:>"
raise Exception
我的我注意是test_temp.py
中的補丁剔除了TheEvilClass
,以便從不調用該異常。我試圖在兩個地方修補它,但異常仍在拋出。你有什麼我在做什麼錯誤的指針,以及如何測試temp.py
而沒有觸發實際的TheEvilClass
?我試圖嘲笑整個模塊(與patch('temp2')
),但這似乎也不工作。
你不能,你在*導入後修補*。相反,你應該重新設計'temp2',以便在導入時不做任何事情。 – jonrsharpe
我不同意@jonrsharpe,你可能不一定想改變代碼的工作方式,只是爲了測試目的。更有可能出現需要正確設置環境的情況,以便導入不會失敗。 – wim
不幸的是,我不能對temp2做任何事情,因爲它是一個外部模塊。 – iknownothing