重置python模拟生成器返回值

2024-09-19 23:31:06 发布

您现在位置:Python中文网/ 问答频道 /正文

如何“重置”返回生成器的方法。如果我模仿这个方法,但是在一个被测试的方法中使用父类两次,第一次调用消耗生成器,第二次调用没有数据。下面是示例代码。两个获取_值的调用应该返回相同的(模拟)列表。在

import mock

class MyTestClass(object):
    def __init__(self, param):
        self.param = param

    def get_values(self):
        return self.param


class MyTestRunner(object):
    def __init__(self):
        pass

    def run(self):
        cls = MyTestClass(2)
        print list(cls.get_values())
        cls = MyTestClass(3)
        print  list(cls.get_values())


with mock.patch.object(MyTestClass, 'get_values') as mock_class:
    mock_class.return_value = ({'a': '10', 'b': '20'}).iteritems()
    m = MyTestRunner()
    m.run()

期望:

^{pr2}$

实际:

[('a', '10'), ('b', '20')]
[]

Tags: 方法runselfgetreturnobjectparaminit
1条回答
网友
1楼 · 发布于 2024-09-19 23:31:06

怎么样?在

mock_class.side_effect = lambda x: {'a': '10', 'b': '20'}.iteritems()

每次通话都会产生副作用,因此每次都会重现。在

你甚至可以像这样事先设定好口诀

^{pr2}$

side_effect的返回值是调用的结果。在

相关问题 更多 >