- Знакомство с системой контроля версий Git и методологией Git Flow.
- Изучение понятий CI/CD и настройка автоматического тестирования с помощью GitHub Actions.
- Разработка модульных тестов (Unit Testing) с использованием библиотеки
pytest. - Реализация принципов ООП на языке Python.
Проект представляет собой консольную утилиту для расчета рейтингов студентов. Программа считывает данные о студентах и их оценках из файла, а затем рассчитывает итоговый рейтинг (средний балл) или выполняет фильтрацию студентов согласно заданному критерию.
В рамках лабораторной работы были реализованы следующие дополнения:
- Класс
XMLDataReader: Реализовано чтение входных данных из формата XML.- Наследуется от абстрактного класса
DataReader. - Поддерживает корректную обработку кодировки UTF-8.
- Наследуется от абстрактного класса
- Класс
CalcFirstQuartile: Реализован расчет студентов, попадающих в первую квартиль распределения по рейтингу.- Вычисляет 25% студентов с наименьшим средним баллом.
- Язык: Python 3.10
- Тестирование: Pytest
- Линтер: Pycodestyle (соблюдение стандарта PEP8)
- CI/CD: GitHub Actions (автоматический запуск тестов при каждом пуше)
git clone https://github.com/ВАШ_НИКНЕЙМ/PTLab1.git
cd PTLab1pip install -r requirements.txtpython -m pytest testpython src/main.py -p data/data.txtclassDiagram class DataReader { <> +read(path: str) DataType }
classDiagram
class DataReader {
<<abstract>>
+read(path: str) DataType
}
class TextDataReader {
+read(path: str) DataType
}
class XMLDataReader {
+read(path: str) DataType
}
class CalcRating {
+__init__(data: DataType)
+calc() RatingType
}
class CalcFirstQuartile {
+__init__(data: DataType)
+calc() RatingType
}
DataReader <|-- TextDataReader
DataReader <|-- XMLDataReader
CalcRating <.. CalcFirstQuartile : использует
Выводы В ходе выполнения лабораторной работы я: Настроил рабочее окружение с использованием Anaconda и Git. Реализовал автоматическое тестирование кода при помощи GitHub Actions. Научился работать с ветками в Git (Feature Branch Workflow). Расширил функционал программы, добавив поддержку формата XML и новый алгоритм расчета. Обеспечил покрытие кода модульными тестами.