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

Какие проблемы могут быть у функции при покрытии Unit тестами

Функция может быть сложной для тестирования, если:

  1. Зависит от внешних ресурсов (БД, API, файловая система).
    Решение: Использовать моки (например, unittest.mock).
    python
    from unittest.mock import patch
    
    @patch('requests.get')
    def test_fetch_data(mock_get):
        mock_get.return_value.json.return_value = {'key': 'value'}
        result = fetch_data()
        assert result == {'key': 'value'}
  1. Имеет побочные эффекты (изменяет глобальное состояние).
    Решение: Изолировать тесты, использовать фикстуры для сброса состояния.

  2. Не детерминирована (возвращает разные результаты при одинаковых входных данных).
    Решение: Фиксировать случайность (например, random.seed(42)).

  3. Слишком сложная логика (много ветвлений, циклов).
    Решение: Разбить на мелкие функции, тестировать каждую отдельно.

  4. Приватные методы/функции.
    Решение: Тестировать через публичный интерфейс или использовать @protected/рефлексию.

  5. Зависит от времени (например, datetime.now()).
    Решение: Подменять время через моки.

    python
    @patch('datetime.datetime')
    def test_expired(mock_datetime):
        mock_datetime.now.return_value = datetime(2020, 1, 1)
        assert is_expired() == True

Идеальная функция для тестов — чистая, детерминированная, без скрытых зависимостей.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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