Издеваться над итератором, чтобы вызвать исключениеPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Издеваться над итератором, чтобы вызвать исключение

Сообщение Anonymous »

Я использую python 2.7.15rc1. Я пытаюсь имитировать итератор, чтобы он выдавал исключение при переборе.
Например:

Код: Выделить всё

elements = [1,2,3,Exception('boom!')]
iterable = 

# this does not print anything.
for value in iterable:
...
Я пробовал использовать атрибутside_effect в методе next() экземпляра MagicMock следующим образом:

Я пробовал использовать атрибут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)
Я предполагал, что цикл for в конечном итоге приведет к вызову __iter__ для методаocked_iterable, который вернет еще один макетный объект со следующим Атрибут , имеющий Side_effect. Я ожидал, что цикл в конечном итоге вызовет методocked_next.next(), который будет повторять список, который я предоставил ему в Side_effect.

Очевидно, мое понимание неверно. Что мне здесь не хватает? Можно ли этого добиться исключительно с помощью макета, или мне нужно создать собственный итератор для реализации такого поведения?

РЕДАКТИРОВАТЬ: Я пытаюсь для тестирования части обработки исключений фрагмента кода, который выполняет итерацию по итерируемому объекту и, следовательно, пытается эмулировать итератор, вызывающий исключение.

Подробнее здесь: https://stackoverflow.com/questions/555 ... -exception
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как вызвать стирание с обратным итератором
    Anonymous » » в форуме C++
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Как вызвать стирание с обратным итератором
    Anonymous » » в форуме C++
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Проблема с рекурсивным итератором каталогов в Windows 11 — не удается отобразить символические связанные подпапки
    Гость » » в форуме C++
    0 Ответы
    36 Просмотры
    Последнее сообщение Гость
  • Как предотвратить сравнение unordered_map.find() с неправильным конечным итератором?
    Anonymous » » в форуме C++
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Почему std::vector::iterator не является непрерывным итератором?
    Гость » » в форуме C++
    0 Ответы
    30 Просмотры
    Последнее сообщение Гость

Вернуться в «Python»