Тестирование Javascript в рамках проекта Django, с CI и охватом - PullRequest
8 голосов
/ 14 июня 2011

Я работаю над проектом Django, который по своей конструкции довольно тяжелый для JavaScript.Для серверного кода мы стараемся обеспечить приличное тестовое покрытие с помощью юнит-тестов, а на немного более высоком уровне - тесты с использованием тест-клиента Django.У нас есть сервер Гудзона / Дженкинса, работающий для CI, с вещами, настроенными более или менее в соответствии с этой статьей , что дает нам тестовый пропуск и статистику покрытия.

Я хотел бы иметьчто-то подобное для нашего JavaScript тоже.Я хотел бы иметь возможность проводить тестирование на уровне юнит-тестов, а также на уровне интеграционных / приемочных испытаний.Для последнего потребуется полная среда DOM JS и работающий сервер django.В идеале я хотел бы как-то использовать тестовый клиент Django, чтобы я мог настроить состояние сервера так, как я привык для тестов Django.Я также хотел бы запустить все тесты с CI-сервера, для чего потребовалось бы какое-то безголовое браузерное окружение (сервер - это Ubuntu без среды рабочего стола).

Я нашел кучу вещей, нопохоже, что он не может работать на сервере CI.Кроме того, интеграция с Django часто невелика и не обеспечивает хорошую тестовую изоляцию для серверной среды.Наконец, в идеале мне бы хотелось, чтобы что-то работало в довольно хорошем темпе, чтобы мой цикл тестирования / кода был максимально быстрым.

Существуют ли фреймворки, которые делают то, что я хочу, или кому-нибудь удалось собрать решение, котороеподходит близко?И есть ли какие-либо общепринятые лучшие практики для хорошего тестирования javascript в сочетании с Django (то есть есть ли какие-либо рекомендуемые подходы от людей django, которые мне не хватает)?

Ответы [ 2 ]

1 голос
/ 14 июня 2011

HtmlUNIT выглядит так, как будто он может делать то, что вам нужно (например, безголовый браузер, поддерживающий JavaScript). Это не должно быть слишком сложным, чтобы приспособить это к команде управления в стиле 'runserver', которая также сбрасывает покрытие при выходе.

http://htmlunit.sourceforge.net/

0 голосов
/ 07 января 2013

Возможно, вы захотите попробовать Ghost.py реализацию Python Phantom.JS .Я предоставляю расширение для django, встроенное в предстоящий LiveServerTestCase .

Оно опирается на PyQt4, поэтому вам придется скопировать его в virtualenv вашего проекта.

...