Тестовое задание в школу бекенд-разработку Яндекса. [UPD: В школу попал :)]
Для работы приложения необходима версия языка Python 3.6 и выше
Зависимости для проекта описаны в файлах Pipfile и Pipfile.lock
Используемые библиотеки:
aiohttp
используется для построения веб-сервисаpytest
используется для тестирования проектаpytest-cov
используется для отображения покрытия тестами проектаaioresponses
используется для мокинга запросов, кроме запросов к веб-сервису в тестахwebargs
используется для валидации входных данных для методов веб-сервисаuvloop
используется для изменения реализации стандартного event loop в asynciopyyaml
используется для работы с конфигурационными файлами формата yamlasyncpg
используется для связи веб-сервиса с СУБД Postgresnumpy
используется для математический операций в методах веб-сервиса
Прежде всего, должны быть установлены:
- pipenv (
pip install pipenv
) - postgresql (
apt install postgresql
)
Порядок установки приложения:
- Склонировать репозиторий с приложением
git clone https://github.com/NewGlad/yandex_test_task app
- Перейти в дикекторию с приложением
cd app
- Активировать виртуальное окружение
pipenv shell
- Установить зависимости для приложения
pipenv install
- Создать базу данных для приложения и его тестирования
su -c "./create_db.sh" postgres
- Убедиться, что тесты приложения завершаются успешно
pytest --cov=app -vv
Для автоматического возобновления работы приложения после перезагрузки виртуальной машины требуется добавить приложение как сервис systemd. Требуемые действия:
- Создать файл
/lib/systemd/system/yandex_test_task.service
с содержимым
[Unit]
Description=Yandex test task REST service
After=multi-user.target
[Service]
Type=simple
WorkingDirectory=ПУТЬ_К_ДИРЕКТОРИИ_С_ПРИЛОЖЕНИЕМ
ExecStart=/usr/local/bin/pipenv run python ПУТЬ_К_ДИРЕКТОРИИ_С_ПРИЛОЖЕНИЕМ/entry.py
[Install]
WantedBy=multi-user.target
- Обновить конфигурацию systemd:
systemctl daemon-reload
- Подключить автозапуск приложения:
systemctl enable yandex_test_task.service
Для запуска тестов необходимо выполнить команду
pytest --cov=app -vv
в корне проекта, ключ -vv
отображает более подробную информацию о запуске тестов, --cov
отображает покрытие тестами кода приложения
Для тестов автоматически сгенерированы тестовые примеры, в случае необходимости можно сгенерировать другие тестовые примеры используя код в файле
tests/test_samples/build_json_for_test.py
Для тестирование стиля кодирования используется pylint с некоторыми ограничениями отключены правила
- C0111 Missing docstring
- C0103 Variable name doesn't conform to snake_case naming style (бывают false-positive срабатывания на строчках типа with open(...) as f:)
Команда для запуска тестирования стиля кодирования
pylint *.py **/*.py --rcfile=standard.rc