Тестирование в Python
Этот курс обучает модульному тестированию на Python с использованием самого популярного фреймворка для тестирования – pytest.
Преподаватель
Иван Маторин
Программист IT-Евангелист, разработчик, лектор курсов
4часа
17видео
38упражнений
4250опыта
Описание курсаКаждый проект в области Data Science нуждается в тестировании. Это дает огромные преимущества – экономит много времени на разработку и сопровождение, улучшает документацию, повышает доверие конечных пользователей и сокращает время простоя производительных систем. Вот почему модульное тестирование стало обязательным навыком, которым пользуется почти каждая компания. Этот курс обучает модульному тестированию на Python с использованием самого популярного фреймворка для тестирования – pytest. К концу курса вы напишете полный набор тестов для проекта в области Data Science. В процессе обучения вы научитесь писать модульные тесты для препроцессоров данных, моделей и визуализаций, интерпретировать результаты тестирования и исправлять ошибки в коде. Для того, чтобы вы могли правильно тестировать свои проекты в области Data Science, вам предстоит изучить такие концепции, как TDD, организацию структуры тестов, фикстуры и mock тестирование.
1. Основы модульного тестирования
В этой главе вы познакомитесь с библиотекой pytest и воспользуетесь ей для написания простых тестов. Вы будете запускать их, трактовать отчеты о результатах тестирования и исправлять ошибки. На протяжении всего раздела мы будем использовать примеры исключительно из модуля предварительной обработки данных проекта линейной регрессии, что позволит вам изучить тестирование в контексте Data Science.Цели тестирования
50
Как часто использовать модульное тестирование?
50
Ручное тестирование
100
Тестирование с помощью pytest
50
Пишем свой первый тест
100
Выполнение тестов
50
Результаты тестирования
50
Случаи, когда тесты завершаются неудачей
50
Выявление и исправление ошибок
100
Другие методики тестирования
50
Преимущества модульного тестирования
50
Использование модульного тестирования в качестве документации
50
2. Дальнейшее погружение в тестирование
В этом разделе вы будете писать более сложные модульные тесты. Вы будете заниматься многим, начиная с тестирования сложных типов данных, таких как массивы NumPy, и заканчивая тестированием обработки исключений. После освоения науки тестирования, мы также уделим внимание искусству. Например, мы узнаем, как найти баланс между написанием слишком большого количества тестов и недостатком тестов. В последнем уроке вы познакомитесь с радикально новой методологией программирования под названием Test Driven Development (TDD) и примените ее на практике. Это может навсегда изменить ваш подход к написанию кода!Использование оператора assert
50
Создание информативного сообщения при падении тестов
100
Проверка значений, возвращаемых вещественных чисел
100
Тестирование с помощью нескольких выражений assert
100
Проверка на исключения
50
Использование контекстного менеджера
100
Проверка на возникновение исключения ValueError
100
Практики тестирования функций
50
Использование пограничных значений в тестировании
100
Использование значений, запускающих специальную логику в тестировании
100
Использование нормальных аргументов в тестировании
100
Test Driven Development (TDD)
50
TDD - использование обычных аргументов
100
TDD - необходимый набор данных
100
TDD - создание функций
100
3. Организация и проведение тестирования
В любом Data Science проекте быстро наступает момент, когда становится невозможно организовать и управлять модульными тестами. В этой главе мы узнаем о том, как правильно структурировать набор тестов, как без усилий выполнять любое подмножество тестов, и как отмечать проблемные тесты, чтобы ваш набор тестов всегда оставался зеленым. Последний урок позволит вам даже добавить в собственный проект статус доверия при сборке проекта и покрытие кода тестами. Завершите эту главу и станьте мастером модульного тестирования!Управление тестами
50
Расположение тестов в структуре проекта
50
Создание тестовых классов
100
Добиваемся совершенства в тестах
50
Запуск тестов одной командой
100
Запуск тестовых классов
100
Ожидаемые отказы и пропуск по условию
50
Помечаем тестовый класс как заведомо провальный
100
Помечаем тестовый класс как пропущенный по условию
100
Указание причин падения тестов в отчете
100
Непрерывная интеграция и покрытие кода
50
Причины неудачи при сборке проекта
50
Понятие покрытия кода тестами
50
4. Тестирование моделей, графиков и многое другое
В этой главе вы прокачаете навыки модульного тестирования, такие как установка, разрушение и mock. Вы также узнаете, как писать тесты на вменяемость для ваших data science моделей, и как тестировать графики matplotlib. К концу этой главы вы будете готовы к тестированию реальных проектов в области data science!Методы setup и teardown
50
Использование фикстуры для файла для обработанных данных
100
Создание фикстур для пустого файла данных
100
Цепочка фикстур с использованием tmpdir
100
Mock тестирование
50
Зависимости без ошибок
100
Моделирование зависимостей
100
Тестирование моделей
50
Тестирование линейных данных
100
Тестирование циклических (круговых) данных
100
Тестирование графиков
50
Создание базового изображения
100
Выполнение тестов для функции, создание графиков
100
Исправление функции для создание графиков
100
Подведём итоги
50