Как я могу «сбросить» метод, возвращающий генератор. Если я высмеиваю этот метод, но дважды использую родительский класс в тестируемом методе, первый вызов потребляет генератор, а второй вызов не имеет данных. Пример кода ниже. Два вызова get_values должны возвращать тот же (издевавшийся) список.Сбросить возвращаемое значение генератора mock генератора 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()
Ожидаемое:
[('a', '10'), ('b', '20')]
[('a', '10'), ('b', '20')]
Actual:
[('a', '10'), ('b', '20')]
[]
спасибо! – jqwha
Просто хотел заметить, что для того, чтобы этот Python 3 был дружелюбным, нужно было бы использовать 'items' вместо' iteritems'. Кроме того, 'элементы' будут работать и в Python 2. Таким образом, он делает его дружественным в обеих версиях. – idjaw