GRAFFIT. Тестовое задание на Python разрабочика. Март 2021 г.
- Реализовать HTTP запрос на сервис получения логов и разбор ответа. Дата логов — параметр;
- Реализовать сортировку полученного ответа по дате создания записи. Необходимо самому реализовать алгоритм сортировки, не пользуясь встроенными в Python функциями, а также сторонними модулями. Сложность Вашего алгоритма должна быть меньше, чем O(n2);
- Спроектировать схему базы данных для хранения полученных логов;
- Реализовать запись в спроектированную БД полученных логов;
- Написать 2-3 модульных теста, используя любую из известных Вам библиотек, для тестирования данных в логах. При написании тестов использовать mock объект;
- Реализовать обработку возможных исключений;
- Выбрать любой разработанный Вами метод и реализовать логирование факта его вызова;
- Класс должен иметь точку входа — публичный метод, принимающий дату логов в качестве аргумента;
- Сделать краткое описание того, на что, как Вы считаете, в Вашем решении стоит обратить внимание.
Учитывая запрет на использование встроенных функций сортировки, остановил свой выбор на быстрой сортировке, поскольку считаю её наиболее приемлимой для такой задачи.
Из-за удобства и быстроты развертывания выбрал SQLite
и unittest
. С тестами можно ознакомиться в файле tests.py
.
Логгирование настроено на запись логов в файл script_logs.txt
. На мой взгляд, записывается вся важная информация о работе скрипта.
Точка входа, классически, расположена в файле main.py
, где одноименная функция, в свою очередь, открывает доступ к методу make_analysis
класса LogsAnalyzer
.
- Клонировать этот репозиторий;
- Установить зависимости и виртуальное окружение;
- Запустить
main.py
и указать дату.