Встречается на собеседованиях • сегодня

Как напишешь Unit тест для кода, который взаимодействует с почтой

Для тестирования кода, взаимодействующего с почтой, можно использовать мок-объекты или фреймворки вроде unittest.mock. Вот пример теста для функции отправки email:

python
from unittest.mock import patch
import smtplib
import pytest

def send_email(to, subject, body):
    server = smtplib.SMTP('smtp.example.com')
    server.sendmail('from@example.com', to, f"Subject: {subject}\n\n{body}")
    server.quit()

@patch('smtplib.SMTP')
def test_send_email(mock_smtp):
# Подготовка мок-объекта
mock_server = mock_smtp.return_value

text
# Вызов тестируемой функции
send_email('to@example.com', 'Test', 'Hello')

# Проверки
mock_smtp.assert_called_once_with('smtp.example.com')
mock_server.sendmail.assert_called_once_with(
    'from@example.com',
    'to@example.com',
    'Subject: Test\n\nHello'
)
mock_server.quit.assert_called_once()
text

Ключевые моменты:
1. Используем `unittest.mock.patch` для замены реального SMTP
2. Проверяем, что были вызваны нужные методы с правильными аргументами
3. Для более сложных случаев можно использовать библиотеки типа `pytest-mock` или `mailpit` для тестового SMTP сервера
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы