Skip to content

Spacehug-zz/sdns_test_case

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Решение тестового задания для Sky DNS

Оригинальное ТЗ

Необходимо создать одностраничный сайт, содержащий форму ввода с текстовым полем, в которое можно ввести url сайта, и после отправки формы - вывести контент страницы на которую ведет введенный url, удалив оттуда весь javascript и css. Все ссылки выделить курсивом, а слова длиннее 5 букв выделить жирным.

Развёртка проекта

Для развёртки потребуются Python 3.6.4, virtualenv.

$ git clone https://github.com/Spacehug/sdns_test_case.git
$ cd sdns_test_case
$ virtualenv venv
$ source venv/Scripts/activate
$ cd django
$ pip install -r requirements.txt

Содержимое requirements.txt:

django==2.0.1
requests==2.18.4
lxml==4.1.1
coverage==4.4.2  # Для тестов

Запуск проекта

В папке django:

$ python manage.py runserver

Миграции делать не нужно - база данных не используется, страница /admin/ выключена, модели User и Group - разрегистрированы.

Прогон тестов

Опять же, в папке django:

$ python -m coverage run manage.py test apps.pageparser.tests -v 2

На данный момент тестами покрыто 92% кода (всё, кроме POST-запроса).

Coverage поддерживает html-отчёты, чтобы их получить можно воспользоваться командой

$ python -m coverage html

Получившийся отчёт будет лежать в папке htmlcov

Сделано "сверх нормы"

  1. Относительные ссылки с целевого сайта сделаны абсолютными, чтобы обеспечить работоспособность с нашей страницы.
  2. Проект всеяден в плане кодировки (закономерное исключение - японский и другие языки, в которых нет пробелов, на страницах с этими языками "слова" выделяются по пунктуации).
  3. Проект нормально работает с XHTML страницами.
  4. Благодаря requests, проект нормально работает со сжатыми в GZip страницами.
  5. Слова внутри ссылок выделены и жирным, и курсивом.

Что ещё можно сделать

  1. На сайтах встречаются другие кодировки, например на ерц66.рф - cp1251. Можно написать обработку для таких случаев.
  2. Добавить обработку ссылок, в href которых абсолютный, неправильно сформированный URL. Иногда встречается на страницах википедии.
  3. Можно повысить живучесть против страниц с неправильно сформированным html.

About

SkyDNS test case solution

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published