[Python] How to mock __next__ magic method?

Discussão em 'Python' iniciado por Stack, Novembro 24, 2025.

  1. Stack

    Stack Membro Participativo

    How to mock Queue.__next__ magic method? The code below with side_effect is not working:

    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 interpreter is not even going inside __next__ method. How to make it work?

    Continue reading...

Compartilhe esta Página