У меня есть следующие файлы:Как издеваются класс, чтобы он не работает на импорт
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
My i ntention был для патча в test_temp.py
, чтобы высмеять TheEvilClass
, чтобы исключение никогда не вызывалось. Я попытался исправить его в обоих местах, но исключение все еще бросается. У вас есть какие-то указания на то, что я делаю неправильно, и как тестировать temp.py
, не вызывая фактического TheEvilClass
? Я попытался насмехаться над всем модулем (с patch('temp2')
), но это тоже не работает.
Вы не можете, вы исправляете * после * импорт. Вместо этого вы должны перепроектировать 'temp2', чтобы ничего не делать при импорте. – jonrsharpe
Я не согласен с @jonrsharpe, вы можете не захотеть изменить способ работы кода только для целей теста. Скорее, это случай, когда нужно правильно настроить среду, чтобы импорт не прерывался. – wim
К сожалению, я ничего не могу сделать о temp2, так как это внешний модуль. – iknownothing