mardi 13 novembre 2018

How should I test that multiple functions were called in a loop?

How can I make sure that all handlers were called in a loop? The best I came up with is to mock fake_handler function and assert that this function was called a certain number of times, but I think there might be a better solution.

class MessageHandler:
    def __init__(self, handlers=None):
        self.handlers = handlers or []

    def handle(self, event, body):
        for handler in self.handlers:
            handler(event, body)

Tests:

def fake_handler(*args, **kwargs):
    pass


class TestMessageHandler(TestCase):
    @patch('tests.test_handlers.fake_handler')
    def test_handle(self, fake_handler_mock):
        messages = MessageHandler([fake_handler_mock, fake_handler_mock])
        messages.handle(None, None)
        self.assertEqual(fake_handler_mock.call_count, 2)

Aucun commentaire:

Enregistrer un commentaire