Тестовый набор для функции сравнения суммы CSV‑данных

Проверьте совпадение суммы, несовпадение, значение по умолчанию и отсутствие файла. Сначала исправьте Path.join: используйте Path(base) / file_name.

Короткий ответ

Что ответить на собеседовании

Проверьте совпадение суммы, несовпадение, значение по умолчанию и отсутствие файла. Сначала исправьте Path.join: используйте Path(base) / file_name.

Подробный разбор

Ответ с пояснениями

Условие

Создайте несколько юнит‑тестов для функции check_data, которая читает CSV‑файл, вычисляет сумму всех чисел и сравнивает её с заданным значением.

def check_data(file_name: str, target_sum: int = 10) -> bool | NoReturn:
    file_path = Path.join(settings.BASE_PATH, file_name)
    if not file_path.exists():
        raise NoFileError

    df = pd.read_csv(file_path, sep=",", header=None)
    if df.values.sum() == target_sum:
        return True
    return False

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

Ответ

Проверьте совпадение суммы, несовпадение, значение по умолчанию и отсутствие файла. Сначала исправьте Path.join: используйте Path(base) / file_name.

Предположим, функция находится в модуле report. Тесты после исправления построения пути:

import pytest
import report

@pytest.mark.parametrize('target,expected', [(10, True), (9, False), (0, False)])
def test_sum(tmp_path, monkeypatch, target, expected):
    monkeypatch.setattr(report.settings, 'BASE_PATH', tmp_path)
    (tmp_path / 'numbers.csv').write_text('1,2\n3,4\n', encoding='utf-8')
    assert report.check_data('numbers.csv', target) is expected


def test_default(tmp_path, monkeypatch):
    monkeypatch.setattr(report.settings, 'BASE_PATH', tmp_path)
    (tmp_path / 'numbers.csv').write_text('10\n', encoding='utf-8')
    assert report.check_data('numbers.csv') is True


def test_missing(tmp_path, monkeypatch):
    monkeypatch.setattr(report.settings, 'BASE_PATH', tmp_path)
    with pytest.raises(report.NoFileError):
        report.check_data('missing.csv')

У pathlib.Path нет метода join. Также достаточно возвращаемой аннотации bool: возможные исключения не требуют объединения с NoReturn. Пустой CSV и нечисловые данные проверяйте отдельно согласно контракту.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее