On 03/19/2012 11:25 AM, Barry Warsaw wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
On Mar 17, 2012, at 04:43 PM, Mark Sapiro wrote:
Next step for me may be to learn more about how the unittests fit
within their framework so I can create some.
It's *relatively* simple. Essentially all unittests live in a test_foo.py
module inside a tests/ directory (which has an __init__.py so it's a
package). I generally name unittest.TestCase subclasses as TestFoo and
individual tests inside there as test_foo() methods. There are lots of
examples spread throughout. It's only a little extra work if you have to
create a new tests/ subdirectory or test_foo.py module, but again, it should
be pretty straightforward.
These all get auto-discovered by the zope.testing framework, so there's
nothing else necessary to hook it all up. The one other tricky thing is the
layers, which are a zope.testing mechanism to share more generic resources
among a suite of tests. E.g. if you need the rest server to be started, you'd
use the RESTLayer (see mailman.testing.layers for what's currently defined).
To enable a layer, you just need to set the `layer` attribute of the TestFoo
class. Almost all the tests will require at least the ConfigLayer since that
brings up the Zope component architecture, connfiguration system, etc.
zope.testing is a bit weird here because the normal rules of subclasses don't
actually apply. E.g. the LMTPLayer derives from ConfigLayer which derives
from MockAndMonkeyLayer. All the appropriate setUp()s get called by
zope.testing so you don't need to up-call explicitly in the layer class. Yes,
this kind of sucks since it's magical, and it's one reason why eventually I'd
like to switch to something like testresources and a more sane testing
framework, but that's a lot of effort for little immediate value.
Note that doctests are all set up in test_documentation.py so they're not
really all that special.
Just as a suggestion, it would be nice to have a few lines in the
documentation about this, something
like you just explained would be already quite good, since it's not so
clear by just looking at the code..
Cheers,
Andrea
_______________________________________________
Mailman-Developers mailing list
Mailman-Developers@python.org
http://mail.python.org/mailman/listinfo/mailman-developers
Mailman FAQ: http://wiki.list.org/x/AgA3
Searchable Archives:
http://www.mail-archive.com/mailman-developers%40python.org/
Unsubscribe:
http://mail.python.org/mailman/options/mailman-developers/archive%40jab.org
Security Policy: http://wiki.list.org/x/QIA9