使用unittest修补方法时,如何返回多个值?

时间:2019-06-10 12:18:55

标签: python mocking patch python-unittest

我有一个方法,可以根据传递的不同参数在不同点返回不同的值。在给定方法上打补丁时,我无法遍历可能需要的其他值?

这是一个示例示例: 说,包含该方法的类是:

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

现在,我正在通过修补Class1中的viewval方法来测试Class2中的sum_method是否返回5。所以,我的测试代码是:


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()

如您所见,当我在Class1中修补viewval方法时,我想要两个不同的输出值:第一次,我想要2,第二次,我想要值3。但是,在上述情况下,该值保持不变在2处,m()的输出被调用一次。测试运行时如何多次更改viewval方法的值?

0 个答案:

没有答案