/tester

A job interview task.

Primary LanguagePythonMIT LicenseMIT

tester

Тестовый проект. Задание для технического интервью. Проект, позволяющий создавать тесты через админу и дающий возможность разным пользователям прохоидть их.

Установка

  1. Склонировать проект себе на компьютер в виде архива или клона.
  2. Установить зависимости из файла requirements.txt.
  3. Переименовать файл .env.example в .env и заполнить его необходимыми переменными окружения.
  4. Запустить проект на dev сервере с помощью команды python manage.py runserver или с помощью docker-compose файла через команду docker compose up --build.
  5. Проект будет доступен по адресу localhost:8000.
  6. При установке проекта без использования 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.