У меня есть метод, который возвращает разные значения в разных точках на основе разных параметров, которые были переданы.Выполняя исправление для данного метода, я не могу перебрать другие значения, которые могут потребоваться?
Вот пример примера: скажем, класс, который содержит метод:
class Class1:
def __init__(self, val):
self.value = val
def viewval(self):
return self.value
class Class2:
def sum_method(self):
c1 = Class1(2)
c2 = Class2(3)
c1_val = c1.viewval()
c2_val = c2.viewval()
return c1_val+c2_val
Теперь я проверяю, возвращает ли sum_method в Class2 5, исправляя метод viewval в Class1.Итак, мой тестовый код:
class TestThis(unittest.TestCase):
def test_code(self):
m = Mock()
m.side_effect = [2,3]
p = Class2()
patcher = patch.object(Class1, 'viewval', m())
patcher.start()
self.assertTrue(p.sum_method(),5)
patcher.stop()
Как вы можете видеть, когда я исправляю метод viewval в Class1, я хочу два разных выходных значения: первый раз, я хочу 2 и второй раз, я хочузначение 3. Но в вышеприведенном случае значение остается равным 2, что выводится, когда m()
вызывается один раз.Как изменить значение метода viewval
несколько раз во время выполнения теста?