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.

Offshoots from the twill project

C. Titus Brown 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.

Note that since twill 3.2, WSGI apps are supported directly via https, so this pacakge is not needed any more for twill itself.

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 some of them:

PBP was very similar to twill – twill was initially based on it – but the project seems to be defunct now. Like PBP, twill was based on mechanize in the past, unfortunately development of that project also stalled. The current version is based on httpx and lxml instead.

funkload is a nifty looking tool that does functional load testing. It is built on webunit.

webtest is an extension to unittest for testing WSGI applications, without starting up an HTTP server.

zope.testbrowser provides an easy-to-use programmable web browser with special focus on testing.

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. Note that it’s not written in Python…

You might also consider checking out Ian Bicking’s proto-implementation of twill in Javascript.

As twill was based upon mechanize, so is Perl’s WWW::Mechanize::Shell based upon WWW::Mechanize. There’s even an HTTP::Recorder. WebTst also looks interesting.