============================== Propaganda, tools and packages ============================== Other opinions ~~~~~~~~~~~~~~ Grig Gheorgiu has written a blog entry on `Web app testing using twill`_. Michele Simionato wrote a nice long article on `Testing Web Apps`_, and Nitesh Djanjani `tried it out`_ as well. .. _Web app testing using twill: http://agiletesting.blogspot.com/2005/09/web-app-testing-with-python-part-3.html .. _Testing Web Apps: http://www.onlamp.com/pub/a/python/2005/11/03/twill.html .. _tried it out: http://www.oreillynet.com/pub/wlg/8201 Tools based on twill ~~~~~~~~~~~~~~~~~~~~ Petrik De Heus wrote a Wikipedia `watchlist RSS feed`_ with twill. .. _watchlist RSS feed: http://www.deheus.net/petrik/blog/post/68/ Tools useful for twill users ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Matt Harrison is working on a `TestGen4Web-to-twill converter`_. .. _TestGen4Web-to-twill converter: http://panela.blog-city.com/generate_twill_scripts_and_mechanize_unittests_from_testgen4.htm Offshoots from the twill project ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ I wrote a simple `wsgi_intercept`_ standalone package based on the WSGI interception stuff for in-process testing of WSGI apps by twill. This is for people who want to talk directly to their Web apps without going through a network connection. .. _wsgi_intercept: http://darcs.idyll.org/~t/projects/wsgi_intercept/README.html Other Python-based Web testing and browsing tools ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ For those who want to use Python-based toolkits to test their Web apps, there are many great options. Here are the ones I know about: PBP_ is very similar to twill -- twill was initially based on it -- but the project seems to be more-or-less defunct. Both twill and PBP are based on mechanize_. funkload_ is a nifty looking tool that does functional load testing. It is built on webunit_. webtest_ is an extension to ``unittest`` for testing Web frameworks. It's primarily used for CherryPy, I think. zope.testbrowser_ is a wrapper around mechanize_ that exposes a more convenient interface for testing. Check out the `zope.testbrowser README`_ for more information. mechanoid_ is a fork of mechanize_ that claims many bug fixes and a different programming style. It's primarily used for scripting Web sites, not for testing, but it can easily be used for testing. PAMIE_ and PyXPCOM_ provide a Python interface for interacting with IE and Mozilla-based browsers, respectively. Finally, Selenium_ is an in-browser testing system that several people have given rave reviews. Check out this `article on Selenium`_ for some starting tips. Note that it's not written in Python... You might also consider checking out Ian Bicking's proto-implementation of `twill in Javascript`_. (Thanks to Grig Gheorghiu for assembling much of this list!) Tools in Other Languages ~~~~~~~~~~~~~~~~~~~~~~~~ As twill is based upon mechanize, so is Perl's `WWW::Mechanize::Shell`_ based upon `WWW::Mechanize`_. There's even an `HTTP::Recorder`_. WebTst_ also looks interesting. For PHP, web_tester_ looks useful. .. _PBP: http://pbp.berlios.de/ .. _maxq: http://maxq.tigris.org/ .. _mechanize: http://wwwsearch.sf.net/ .. _pyparsing: http://pyparsing.sourceforge.net/ .. _funkload: http://funkload.nuxeo.org/ .. _webunit: http://mechanicalcat.net/tech/webunit/ .. _webtest: http://www.cherrypy.org/file/trunk/cherrypy/test/webtest.py .. _zope.testbrowser: http://cheeseshop.python.org/pypi?:action=display&name=zope.testbrowser .. _zope.testbrowser README: http://svn.zope.org/*checkout*/Zope3/trunk/src/zope/testbrowser/README.txt .. _Selenium: http://confluence.public.thoughtworks.org/display/SEL/Home .. _article on Selenium: http://agiletesting.blogspot.com/2005/10/article-on-selenium-in-october-issue.html .. _WSGI applications: http://www.python.org/peps/pep-0333.html .. _WSGI: http://www.python.org/peps/pep-0333.html .. _Quixote: http://www.mems-exchange.org/software/quixote/ .. _mechanoid: http://python.org/pypi/mechanoid .. _twill in Javascript: http://blog.ianbicking.org/twill-in-javascript.html .. _PAMIE: http://pamie.sourceforge.net/ .. _PAMIE examples page: tutoriala.html .. _PyXPCOM: http://kb.mozillazine.org/PyXPCOM .. _tidy page: http://tidy.sourceforge.net/ .. _easy_install/setuptools: http://peak.telecommunity.com/DevCenter/EasyInstall .. _installing easy_install: http://peak.telecommunity.com/DevCenter/EasyInstall#installing-easy-install .. _WebTst: http://webtst.sourceforge.net/documentation.html .. _`WWW::Mechanize`: http://search.cpan.org/perldoc?WWW::Mechanize::Shell .. _`WWW::Mechanize::Shell`: http://search.cpan.org/perldoc?WWW::Mechanize::Shell .. _`HTTP::Recorder`: http://www.perl.com/pub/a/2004/06/04/recorder.html .. _web_tester: http://www.lastcraft.com/web_tester_documentation.php