Тестовый проект. Задание для технического интервью. Проект, позволяющий создавать тесты через админу и дающий возможность разным пользователям прохоидть их.
- Склонировать проект себе на компьютер в виде архива или клона.
- Установить зависимости из файла
requirements.txt
. - Переименовать файл
.env.example
в.env
и заполнить его необходимыми переменными окружения. - Запустить проект на dev сервере с помощью команды
python manage.py runserver
или с помощью docker-compose файла через командуdocker compose up --build
. - Проект будет доступен по адресу
localhost:8000
. - При установке проекта без использования docker надо перед запуском сервера запустить команду
python manage.py load_tests
для загрузки тестовых данных.
Нужно сделать простой сервис проведения тестирования по каким-либо темам. Т.е. есть тесты с вариантами ответов, один или несколько вариантов должны быть правильными. Тесты группируются в наборы тестов, которые затем пользователь может проходить и видеть свой результат. Функциональные части сервиса:
-
Регистрация пользователей
-
Аутентификация пользователей
-
Зарегистрированные пользователи могут
- Проходить любой из тестовых наборов
- Последовательный ответ на все вопросы, каждый вопрос должен выводится на новой странице с отправкой формы (перескакивать через тесты или оставлять неотмеченными нельзя)
- После завершения тестирования смотреть результат:
- количество правильных/неправильных ответов
- процент правильных ответов
- количество правильных/неправильных ответов
-
Админка. Стандартная админка Django. Разделы:
- Стандартный раздел пользователей
- Раздел с наборами тестов
- Возможность на странице набора тестов добавлять вопросы/ответы к вопросам/отмечать правильные ответы
- Валидация на то, что должен быть хотябы 1 правильный вариант
- Валидация на то, что все варианты не могут быть правильными
- Удаление вопросов/вариантов ответов/изменение правильных решений при редактировании тестового набора
- Код в репозитории на GitHub.
- Список всех зависимостей должен храниться в requirements.txt, соответственно можно установить их командой pip install -r requirements.txt.
- Разработка должны вестись в virtualenv, но сама директория с virtualenv должна быть добавлена в .gitignore.
- Настройки должны храниться в settings.py, но также, при наличии settings_local.py в той же директории, настройки из settings_local.py должны переопределять настройки в settings.py. Т.е. если есть файл settings_local.py, то определенные в нем параметры имеют больший приоритет. Сам файл settings_local.py добавляется в .gitignore. Таким образом у каждого девелопера и на бета сервере можно использовать кастомные настройки, например для соединения с БД.
- Должен работать способ создания структуры БД - встроенный manage.py migrate.
- По фронт-енду требований никаких не предъявляется. Интерфейс на твое усмотрение и он не буде оцениваться. Можно использовать любимый фреймворк или, например, воспользоваться Twitter Bootstrap.