Pull to refresh
Comments 18
интересно посмотреть на «позволяет решать задачи любого класса, в которых необходим применение браузера». В качестве примера можно взять ну какой-нибудь аякс-ориентированный сайт, вроде gmail.
Прошу прощения, при редактировании пропала оговорка о поддержке яваскрипта. Поправил.
А под задачами я подразумевал кравлинг, постинг, скачивание и т.п.
Не пробовал. Обязательно посмотрю, но судя по описанию это просто специализированный скриптовый язык, в основе которого как раз и лежит механайз.
Это более подходящая для тестирования утилита.
Mechanize — библиотека, которая подойдет для написания какого-то простого робота.
А если тестирование сводиться к «зайти по урлу-заполнить форму-проверить код ответа-найти контрольные сообщения», то twill несомненно лучше.
Twill — это надстройка над mechanize:)
Его можно использовать как независимый скриптовый язык, а можно подключить как модуль к питоновскому приложению и вызывать функции при помощи питоновского синтаксиса. Для тестирования — супер вещь.
Когда-то решал те же задачи. Но к сожалению остановился на httplib2, оно хоть более низкоуровневое но на тот момент нормально с кешированием по ETag не работало, а мне нужно было чтобы даже несколько тыс клиентов на положили сервер на колени запросами к биллингу.
Watir и mechanize немного разные вещи.
Аналог Watir для python это P.A.M.I.E. (http://pamie.sourceforge.net/)
Приятная штука, хотя возможности парсера слабоваты. Надо будет попробовать в связке с BeautifulSoup
BeautifulSoup идет в комплекте =)
$ ls mechanize-0.1.11/mechanize | grep be
_beautifulsoup.py
Безусловно подобные библиотеки облегчают жизнь, но они всё таки не дают 100% контроля над запросами.
Для «глубокого» тестирования я предпочитаю libwhisker, на нём кстати основан известный сканер безопасности Nikto, который как раз предназначен для тестирования веб-приложений.
Кстати есть не большая статья по использованию этой библиотеки Using Libwhisker, правда ужасно устаревшая, но у libwhisker есть прекрасная документация, которая поставляется с ним же в архиве.
Удачи :)
Мне mechanize не подошел в связи с AJXO'м. Я использую анализатор трафика и свой эмулятор Firefox
во-первых, как уже писали выше — watir и machanize ну совсем разные штуки.
во-вторых, если уж тестить клиент, то со всеми потрахами и во всех браузерах. Например, selenium (если честно не знаю проекта более навороченного). В селениуме правда изза горы функицонала и настройка его — не для слабонервных. Зато в результате я смог запустить его вообще везде. И на maxthon под виндой, и в konqueror 3/4 и в опере и в гуглхроме. Короче во всех браузерах без исключения =). Никаких ограничений на используемые технологии нет. Если пользователь может ткнуть по чему-либо, то и selenium сможет.

Вместо регулярок надо достаточно хорошо знать xpath.
В офисе селениум установлен на сервере и мы его постепенно внедряем.
Вам, возможно, стоит присмотреться к решениям типа вышеупомянутого Selenium. Существуют плагины (например, под Рельсы), которые позволяют писать скрипты к нему прямо на руби, тестируя сразу все, включая AJAX/Javascript-части вашего приложения.

По задумке, вы запускаете Selenium-тесты также как юнит тесты (из того же интерфейса) и тестируете сразу под всеми доступными на вашей платформе браузерами.
Оно загрузит fixtures, создаст *_test базу и прогонит тесты через все браузеры. Селениум их сам запустит, потыкает, и вам сразу покажет какое всплывающее окошко где отвалилось, или где забыли показать незаполненное поле.

Возможно это решение вам (как и мне в свое время) поможет избежать написания большинства юнит тестов.
Ещё над mechanize и ClientForm сделан пакет zope.testbrowser — тоже рекомендую ознакомиться. Он добавляет разные удобности, вроде красивой работы с формами, reload, goBack, поддержку куки и др. Особенно хорош для автоматических тестов.
Only those users with full accounts are able to leave comments. Log in, please.