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