I need to do some basic website testing (log into account, add item to
cart, fill out and submit forms, check out, etc.). What modules would
be good to use for webapp testing like this?
From a bit of searching, it looks like twill was used for this, but it
hasn't been updated in some time.
<http://code.google.com/p/webdriver/> might be worth a look.
--
Cheers,
Simon B.
twill is still good.
http://seleniumhq.org/
"Selenium is a suite of tools to automate web app testing across many
platforms."
Have a look at Selenium. Specifically, look at Selenium RC.
You can write code in Python to drive a web browser and run web tests.
-Corey
Thanks.
What's the difference between WebDriver and Selenium?
Well, this http://twill.idyll.org/ seems to be the twill website, but
it looks pretty out of date.
I also found this http://code.google.com/p/twill/ , which is somewhat
newer. No activity in the last 3 and a half months though.
http://wwwsearch.sourceforge.net/mechanize/
Anyone here tried it?
Twill uses mechanize internally.
Selenium runs in a browser, and uses JavaScript to perform all your
automated actions. It need a browser running to work. Several are
supported, Firefox, Safari, IE and I think others. You are at thier
mercy of the browser's JavaScript engine - I've often had trouble with
IE's XPath support, for instance - tests will run fine in Firefox and
safari, but not work in IE.
One big advantage of Selenium is that there an "IDE" available, a
Firefox add-on which will allow you to record actions. This is useful
for building regression tests and acceptance tests for bugs. Sadly, it
often tempts people into writing their acceptance tests after the
fact, too - a grave mistake IMHO.
Selenium tests can be written in Python, Ruby, Java, and in the form
of HTML tables. This last seems quite popular with QAs for some reason
which escapes me entirely.
WebDriver runs outside a browser. It can be (and usually is) used to
drive a real browser, though there's is a HtmlUnit driver available,
which bypasses any real browser and goes direct to the site you are
testing. Even this last option, though, does allow the testing of
sites which make use of JavaScript - which is just about all of them
these days.
It makes use of native drivers for each of the browsers it supports,
so it runs very much faster than Selenium. Since it presents the test
program with its own version of the page's DOM tree, it's also less
likely to give browser incompatibilities.
WebDriver tests can be written in Java or Python, at the moment.
The Selenium people have recognized the superiority of the WebDriver
approach, so the nascent Selenium 2 will use WebDriver under the
covers. For the moment, though, you have to pick one or the other.
Mechanize is a superb library for its intended purpose - I use it all
the time. It's lack of support for pages with JavaScript
functionality, though, means it's not very useful at a testing tool
for modern web sites.
--
Cheers,
Simon B.
There's also zope.testbrowser, which is a handy wrapper around
Mechanize. I wonder if they've done anything with JS there?
Chris
--
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
Windmill is an option, but I haven't tried it myself; Selenium is good.
--
Aahz (aa...@pythoncraft.com) <*> http://www.pythoncraft.com/
"I won't accept a model of the universe in which free will, omniscient
gods, and atheism are simultaneously true." --M
I'll second Windmill as an option, have had good experiences with it.
The current version is a little on the slow side, but I believe there's
a big new release just around the corner that contains significant
performance improvements.
Ryan
--
Ryan Kelly
http://www.rfk.id.au | This message is digitally signed. Please visit
ry...@rfk.id.au | http://www.rfk.id.au/ramblings/gpg/ for details
if you ask flier liu (http://code.google.com/p/pyv8) veeery nicely,
he _might_ be persuaded to make the work he's doing be free software.
hint: if you check closely into the pyv8 tests, you'll see a module
"w3c.py" which implements DOM.
in other words, he's writing a command-line-web-browser-without-the-
gui-to-get-in-the-way.
in other words, he's taking HTML off the web and _executing the
javascript_ (using pyv8) to construct the exact same kind of page that
a user would normally see _if_ you actually put the resultant DOM
(after the javascript is done executing) into a web browser's display
engine.
the reason why he's doing is this is because he has quite literally
miilllions of web pages to analyse, and working with e.g. selenium
just absolutely does not cut the mustard, performance-wise.
so, if you can get him to make the work he's doing free software, you
will get a test suite whereby you can have pyv8 actually execute the
on-page javascript, then use e.g. BeautifulSoup to walk the resultant
DOM, and can do proper analysis of the DOM, which would otherwise be
impossible.
l.