Например:
Код: Выделить всё
elements = [1,2,3,Exception('boom!')]
iterable =
# this does not print anything.
for value in iterable:
...
Я пробовал использовать атрибутside_effect в методе next() экземпляра MagicMock следующим образом:
р>
Код: Выделить всё
from mock import MagicMock
mocked_next = MagicMock()
mocked_next.next.side_effect = [1,2,3,Exception('boom!')]
mocked_iterable = MagicMock()
mocked_iterable.__iter__.return_value = mocked_next
...
# This does not print anything and no exception is raised
for value in mocked_iterable:
print(value)
Очевидно, мое понимание неверно. Что мне здесь не хватает? Можно ли этого добиться исключительно с помощью макета, или мне нужно создать собственный итератор для реализации такого поведения?
РЕДАКТИРОВАТЬ: Я пытаюсь для тестирования части обработки исключений фрагмента кода, который выполняет итерацию по итерируемому объекту и, следовательно, пытается эмулировать итератор, вызывающий исключение.
Подробнее здесь: https://stackoverflow.com/questions/555 ... -exception