LINUX.ORG.RU

navit - библиотека для быстрого клепания клиентских тестов

 , ,


1

2

https://github.com/nodeca/navit

Минусы:

- использует phantomjs, нельзя делать тесты под IE и разные девайсы

Плюсы:

- ну очень просто и быстро клепать тесты на «протыкивание» интерфейса
- легко на ходу вносить изменения в сервер, например заливать фикстуры в базу

В общем, это библиотека скорее для интеграционных, чем для юнит тестов. Ну и практика показывает, что зачастую проще и дешевле склепать интеграционные тесты, чем фигачить по науке миллионы юнитных с тоннами моков. Особенно когда код нестабильный и часто меняется.

Ничего против юнит-тестов не имею, сам их пишу когда уместно. Просто объясняю область применения библиотеки.

Всем добра!

★★★★★

А чем оно лучше selenium?

fv ()
Ответ на: комментарий от fv

Видимо ничем

использует phantomjs, нельзя делать тесты под IE и разные девайсы

Kilte ★★★★★ ()

- ну очень просто и быстро клепать тесты на «протыкивание» интерфейса

Тоже самое можно сказать и про Selenium

- легко на ходу вносить изменения в сервер, например заливать фикстуры в базу

Не знаю, как там в мире js, я лично использую selenium-python и никаких проблем не испытываю. Тесты запускаются в главном треде, приложение в отдельном. Перед выполнением набора тестов забиваю базу, подготавливаю заглушки, а после выполнения привожу в изначальное состояние. Единственное, за чем приходится следить, чтобы в моделях алхимии были актуальные данные после того, как база была затронута приложением. В ноде нельзя подобное устроить? Или как-то по-другому это всё происходит?

Kilte ★★★★★ ()
Последнее исправление: Kilte (всего исправлений: 2)
Ответ на: комментарий от Kilte

Тоже самое можно сказать и про Selenium

Сказать можно что угодно. А чтобы говорить по делу надо примеры тестов сравнивать и простоту конфигурации.

Не знаю, как там в мире js, я лично использую selenium-python и никаких проблем не испытываю. Тесты запускаются в главном треде, приложение в отдельном.

Ты конечно нереально крут, что осилил селениум под питоном, я только не понимаю, какое отношение это имеет к ноде.

Vit ★★★★★ ()
Ответ на: комментарий от Vit

Ты конечно нереально крут, что осилил селениум под питоном, я только не понимаю, какое отношение это имеет к ноде.

Спасибо :3 Там ещё в конце вопрос был:

В ноде нельзя подобное устроить?

Мне всегда казалось, что это не зависит от используемой библиотеки.

Сейчас подробнее почитал про navit, да, более человекопонятное и менее многословное API, но на этом всё. Selenium всё же по умнее будет, как мне показалось на первый взгляд. Не знаю, кому-то может быть и будет полезно.

Kilte ★★★★★ ()
Ответ на: комментарий от Kilte

Спасибо :3 Там ещё в конце вопрос был:

В ноде нельзя подобное устроить?

Устроить можно все что угодно. Вопрос в удобстве. Здесь помимо синтаксиса дополнительный профит в том, что все в одном треде - еще меньше возни для юзера.

Сейчас подробнее почитал про navit, да, более человекопонятное и менее многословное API, но на этом всё. Selenium всё же по умнее будет, как мне показалось на первый взгляд. Не знаю, кому-то может быть и будет полезно.

В этом весь цимес. Юзеры любят простое апи, а не ынтырпрайзные вундервафли. Когда тестов много - быстро доходит, что писать их надо просто и быстро.

Vit ★★★★★ ()
Ответ на: комментарий от Vit

Устроить можно все что угодно. Вопрос в удобстве. Здесь помимо синтаксиса дополнительный профит в том, что все в одном треде - еще меньше возни для юзера.

Так а чем selenium мешает? Вот что интересно. Просто в первом посте было сказано, что:

легко на ходу вносить изменения в сервер, например заливать фикстуры в базу

КМК, selenium этому никак не препядствует. Сахарку добавили разве что.

быстро доходит, что писать их надо просто и быстро.

Не спорю. Отойду немного от темы, если не против. Я даже для этого небольшую обёртку для selenium запилил. Нечто напоминающее PageObject. Просто создаёшь класс, описывающий страницу, в нём словарь с локаторами, а в методах дёргаешь например self._click('locator_name'), element = self._find('locator_name') и т.д. Даже есть генератор форм, который грузит из словаря/yaml файлов (да откуда угодно вобщем-то) определение формы и возвращает класс, готовый к использованию. Получается что-то вроде этого:

# forms.yml
CreateForm:
    fields:
        name: '//input[@id="name"]'
        description: '//textarea[@id="description"]'
        save:
            type: button
            locator: '//input[@type="submit"]'
            is_ajax: true
# pages.py
forms = form_loader.load('forms.yml')
form = forms.CreateForm(self.browser)
form.name = 'Foo'
form.description = 'Bar'
form.save()

Всё хочу нормальную, лишённую существующих родовых травм, версию с нуля запилить, и выложить её, только никак не найду время.

Kilte ★★★★★ ()
Ответ на: комментарий от Kilte

Так а чем selenium мешает?

Ты путаешь принципиальную возможность и простоту.

Сахарку добавили разве что

В этом вся соль, ёпта. Вопрос не как сделать, а как усилий будет потом стоить этим пользоваться.

Vit ★★★★★ ()
Ответ на: комментарий от Vit

Лорчую, когда тесты писать быстро и просто, то оно даже и раслабляет.

anonymous ()
Ответ на: комментарий от Vit

ёпта

Не обращай внимания, я иногда люблю тупняк на ровном месте разводить.

А теперь главный вопрос. Почему не стали форкать/писать обёртку для selenium, получив при этом поддержку кучи браузеров и дополнительные плюшки? Тем более, что реализация под ноду имеется.

Kilte ★★★★★ ()
Ответ на: комментарий от Kilte

А теперь главный вопрос. Почему не стали форкать/писать обёртку для selenium, получив при этом поддержку кучи браузеров и дополнительные плюшки? Тем более, что реализация под ноду имеется.

Не было смысла. Эксплорер под линупсом все равно не запустишь без кучи телодвижений. А раз явно профита нет - проще напрямую воткнуть драйверы phantomjs/slimerjs.

Кому надо - нехай дописывает. Мне хватает того что есть. Время не резиновое :)

Vit ★★★★★ ()
Ответ на: комментарий от Vit

Не заводись, приятель. Лучше бы доходчиво и пошагово объяснил преимущества. Я вот тоже python/selenium юзаю и не сказать, чтобы сильно огорчаюсь. Но тем не менее интересно и про другие инструменты почитать.

fv ()
Ответ на: комментарий от fv

Чего непонятного-то? Я вполне серьезно ответил.

Vit ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.