Sobes.tech
Back to questions
Junior — Middle
68

Как реализовать единичное тестирование для модуля, отправляющего и получающего электронную почту?

Answer from AI

sobes.tech AI

Для единичного тестирования модуля, который отправляет и получает электронную почту, важно изолировать тестируемый код от реальной почтовой системы. Для этого используют мок-объекты или заглушки.

В Python можно применить библиотеку unittest.mock для замены функций отправки почты на фиктивные, чтобы проверить, что они вызываются с правильными параметрами.

Пример с использованием unittest и mock:

from unittest import TestCase
from unittest.mock import patch

class EmailModule:
    def send_email(self, to, subject, body):
        # Реальная отправка почты
        pass

class TestEmailModule(TestCase):
    @patch('path.to.EmailModule.send_email')
    def test_send_email(self, mock_send):
        email_module = EmailModule()
        email_module.send_email('test@example.com', 'Hello', 'Body text')
        mock_send.assert_called_once_with('test@example.com', 'Hello', 'Body text')

Для получения почты можно замокать методы, которые получают сообщения, или использовать локальный SMTP-сервер для тестирования.