Тестовое задание Школы бэкенд-разработки Яндекса
Это выполненное мной тестовое задание Школы бэкенд-разработки Яндекса.
Изначально были даны: описание задания (файл Task.md), файл openapi.yaml (tip: swagger.io), и примеры тестов (unit_test.py).
Для деталей задания рекомендую ознакомиться с файлом Task.md.
Всё, за исключением этого файла, я сделал за два дня. Поэтому задание выполнено не идеально, и кое-что не доделано (например, я не описал, как сделать свой systemd unit, успел лишь настроить конкретно для своего компа и для сервера).
Все инструкции приводятся для linux. Использовался python3.8+
, но, возможно, подойдёт и более ранняя версия.
git clone https://github.com/igorantonow314/ya-sch#
cd ya-sch
python -m pip install -r requirements.txt
python .
make install
make test
Корректировка и проверка форматирования кода:
make lint
(используются black
и flake8
)
-
api/
- модуль, отвечающий за реализацию apiapp.py
- основные методы api, собственно сервер (aiohttp
)shema.py
- схема(-ы) для валидации приходящих запросов
-
db/
- модуль, отвечающий за базу данных (исп.sqlalchemy
)db.py
-
shop.db
- база данных в форматеsqlite
-
unit_test.py
- тестирование API запущенного проекта -
unit_test.sh
- полезный скрипт, который запускает проект, тестирует api, и прекращает выполнение проекта -
tests/
- другие тесты, тестирующие непосредственно функции модулей, с использованиемpytest
-
Временные файлы:
htmlcov/index.html
- отчёт покрытия кода тестами изtests/
(на момент релиза толькоdb.py
на 93%)expected.json
,response.json
- см.unit_test.py
test-db.db
- база данных, созданная во время тестированияtests/db/db.py
-
Task.md
- описание задания -
openapi.yaml
- описание спецификации API -
.gitignore
,.flake8
,pytest.ini
- конфигурационные файлы соответствующих утилит