Как высмеять магический метод __next__?Python

Программы на Python
Ответить
Anonymous
 Как высмеять магический метод __next__?

Сообщение Anonymous »

Как имитировать магический метод Queue.__next__? Приведенный ниже код с Side_effect не работает:

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

from unittest.mock import MagicMock

class Queue:

def __init__(self):
self.nums = [1, 2, 3]

def __iter__(self):
return self

def __next__(self):
try:
num = self.nums.pop()
except Exception:
raise StopIteration
return num

class Consumer:

def __init__(self, queue):
self._queue = queue

def consume(self):
for msg in self._queue:
raise ValueError(msg)

def test_it():
queue = MagicMock()
queue.__next__.side_effect = [4, 5, 6]  # not working
consumer = Consumer(queue)
consumer.consume()
Интерпретатор Python даже не заходит внутрь метода __next__. Как заставить это работать?

Подробнее здесь: https://stackoverflow.com/questions/774 ... gic-method
Ответить

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

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

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

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

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