Как вернуть несколько значений при исправлении метода с unittest? - PullRequest
0 голосов
/ 10 июня 2019

У меня есть метод, который возвращает разные значения в разных точках на основе разных параметров, которые были переданы.Выполняя исправление для данного метода, я не могу перебрать другие значения, которые могут потребоваться?

Вот пример примера: скажем, класс, который содержит метод:

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 несколько раз во время выполнения теста?

...