我有一个方法,可以根据传递的不同参数在不同点返回不同的值。在给定方法上打补丁时,我无法遍历可能需要的其他值?
这是一个示例示例: 说,包含该方法的类是:
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
方法的值?