У меня есть следующий упрощенный класс, который я издеваюсь:
class myClass(object):
@staticmethod
def A():
#...
def check(self):
#code...
value = self.A()
#more code...
В моем первом тесте я высмеиваю только метод A
from django.test import TestCase
from mock import MagicMock
import myClass
class FirstTest(TestCase):
def setUp(self):
myClass.A = MagicMock(return_value = 'CPU')
def test(self):
#some tests
myClassObj = myClass()
myClassObj.check()
В то время как в моем втором тесте я высмеиваю весь метод проверки:
from django.test import TestCase
from mock import MagicMock
import myClass
class SecondTest(TestCase):
def setUp(self):
myClass.check = MagicMock(return_value = someObject)
def test(self):
#some tests
myClassObj = myClass()
myClassObj.check()
Теперь мои утверждения из моего первого теста терпят неудачу, потому что вместо вызова check()
и издевки A()
внутри check()
он вызывает полностью издеваемое check()
из моего второго теста.
Есть ли способ очистить и установить метод "нормальный" после теста? Я уже пробовал myClass.check.reset_mock()
, но он ничего не делает. Перемещение порядка моих тестов тоже не делает.
Я использую mock 1.0b1 для python из http://pypi.python.org/pypi/mock/