Вступить в клуб →
средняяpythonТестирование: pytest, фикстуры, моки

Фейковый репозиторий пользователей для тестов сервиса

Чтобы тестировать сервис без базы, нужен фейк репозитория. Напишите класс InMemoryUserRepo с тремя методами.

  • add(user) — сохраняет словарь пользователя с полями id и email. Если пользователь с таким id или таким email уже есть — бросает ValueError, как это сделала бы база с уникальными индексами.
  • get(user_id) — возвращает пользователя или None.
  • find_by_email(email) — возвращает пользователя или None.

Возвращаемые словари должны быть копиями: изменение результата снаружи не должно менять данные внутри репозитория.

заготовка решения

class InMemoryUserRepo:
    def __init__(self):
        pass

    def add(self, user):
        raise NotImplementedError

    def get(self, user_id):
        raise NotImplementedError

    def find_by_email(self, email):
        raise NotImplementedError

🔒 Проверка ответа — для участников клуба

  • Автотесты прямо в браузере
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела