- Освоить основы работы с системой контроля версий Git.
- Научиться использовать GitHub для хранения проектов.
- Освоить механизм автоматического тестирования и проверки стиля кода через GitHub Actions (CI/CD).
- Реализовать индивидуальное задание с использованием языка Python и модульного тестирования (pytest).
Базовый проект: система расчёта среднего рейтинга студентов по дисциплинам.
Данные студентов и их оценки хранятся в файлах. Поддерживаются различные форматы входных данных (txt, yaml).
Индивидуальный вариант №8:
Формат входного файла: YAML
Расчётная процедура: определить и вывести всех студентов, чей рейтинг попадает во вторую квартиль распределения.
rating/
├── .github/workflows/github-actions-testing.yml # CI/CD
├── data/
│ ├── data.txt
│ └── data.yaml
├── src/
│ ├── CalcRating.py
│ ├── DataReader.py
│ ├── TextDataReader.py
│ ├── YamlDataReader.py
│ ├── QuartileCalculator.py
│ ├── Types.py
│ └── main.py
├── test/
│ ├── test_CalcRating.py
│ ├── test_TextDataReader.py
│ ├── test_YamlDataReader.py
│ ├── test_QuartileCalculator.py
│ └── test_main.py
├── requirements.txt
├── .gitignore
├── LICENSE
└── README.md
- Язык программирования: Python 3.10+
- Управление зависимостями: requirements.txt
- Модульное тестирование: pytest
- Проверка стиля кода: pycodestyle (PEP8)
- CI/CD: GitHub Actions
pip install -r requirements.txtpycodestyle src testpytest testДля текстового формата:
python src/main.py -p data/data.txtДля YAML-формата (вариант 8):
python src/main.py -p data/data.yaml --yamlclassDiagram
class DataReader {
<<abstract>>
+read(path: str) DataType
}
class TextDataReader {
+read(path: str) DataType
}
class YamlDataReader {
+read(path: str) DataType
}
class CalcRating {
-data: DataType
-rating: dict[str, float]
+calc() dict[str, float]
}
class QuartileCalculator {
-ratings: dict[str, float]
+second_quartile_students() list[str]
}
DataReader <|-- TextDataReader
DataReader <|-- YamlDataReader
CalcRating ..> DataReader : использует данные
QuartileCalculator ..> CalcRating : использует рейтинг
В ходе выполнения лабораторной работы были освоены:
- Базовые команды Git и принципы работы с репозиторием на GitHub.
- Настройка CI/CD через GitHub Actions.
- Применение pytest для модульного тестирования.
- Контроль качества кода с помощью pycodestyle.
- Работа с различными форматами данных (txt, yaml).
- Реализация алгоритма для вычисления второй квартиль в распределении рейтингов студентов.
Проект успешно протестирован и соответствует требованиям.