самостоятельные / 1 / отчет 2доп
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
«Московский технический университет связи и информатики»
Кафедра Программная инженерия
ОТЧЕТ
по самостоятельной работе №1
по дисциплине «Основы DevOps»
Тема: «Создание REST сервиса»
Выполнил: студент группы БВТ2402
Кудряшов Вадим Георгиевич
Проверил: Тимчук А.В.
Москва, 2025
Индивидуальное задание
Задание работы
Нам нужно написать прогу, которая находит N-ое число ряда Фибоначи и реализовать ее в FastAPI.
Для начала настроим окружение:
Создадим папку проекта и настроим виртуальное окружение (venv) для изоляции зависимостей Python
Виртуальное окружение – изолированная папка внутри проекта, которая содержит собственный интерпретатор Python и набор библиотек.
Теперь активируем виртуальное окружение, чтобы все библиотеки устанавливались в него
и установим необходимые пакеты для разработки и тестирования
FastAPI – сам фреймворк приложения
Uvicorn – веб сервер
Pytest – тулза для тестов
Httpx – библиотека для HTTP запросов
Теперь напишем математическое ядро приложухи, я выбрал n-ое число ряда фибоначи, код простенький:
Хотел
проверить как работает прога руками,
но вспомнил что качал pytest,
поэтому сейчас напишем небольшой тест
для функции.
Пока писал тест, понял, что нельзя называть файл math.py, импорт пытался вытащить мою функцию из библиотеки, поэтому переименовал его, дальше запускаем тесты
Чиназус))
Теперь прикрутим все это на веб через FastAPI
1-2 строка: просто импорты
4 строка: инициализировали наше приложение
6 строка: по GET запросу по адресу, например, http://localhost:8000/fibonacci/n будет выводить нашу приложуху
7-9 строка: функция в которой вызвали функцию, результат вывели в формате словаря, FastAPI сам преобразует словарь в JSON ответ.
Ну го тестить
Сначала просто перешел по localhost
Все ок
Перешел по http://127.0.0.1:8000/fibonacci/5
Чиназус))
Теперь напишем тесты к приложухе
Пока выглядит так, тест проверяет корректный код ответа (HTTP 200) и ожидаемый формат данных.
Сейчас хочу добавить еще тестирование краевых случаев, для этого вернемся в код main.py
прописали случай с n<0
Теперь добавим еще один тест-кейс:
И пропишем еще пару важных тестов
422 статус код - сервер получил и понял запрос, но не может его обработать из-за семантических ошибок в теле запроса
Проверим, прошли ли все тесты проверки или не
Все кайф) Репозиторий:
https://gitlab.devops.ru/kazus/lab2_extra
Заключение
В ходе выполнения лабораторной работы были успешно решены следующие задачи:
Перечисление выполненных задач и их результаты.
