Chris Withers wrote:
Jim Fulton wrote:
Am I right in assuming that there aren't any good narrative docs for
test layers?
This is obviously in the eye of the beholder. I'm sure the people
who created narratives tried to do a good job. Perhaps you can do better.
I may be missing some then... which narratives are you thinking of?
You cited 3 in your note.
...
Now, related to this, say I have content objects X and Y, which are
expensive to set up. I have LayerX which sets up a sample content
object X, and LayerY which does the same for content object Y. This
is fine for tests which need one or other content type, but how do I
write tests which need both?
You create a layer that extends both.
How so?
You create a layer whose __bases__ include LayerX and
LayerY. If you're layers happen to be implemented
as classic classes, you then could use subclassing.
Here's a sample of why I'm struggling:
class ZODB:
@classmethod
def setUp(cls):
... open zodb connection
... begin transaction
@classmethod
def tearDown(cls):
... abort transaction
... close connection
class LayerX(ZODB):
@classmethod
def setUp(cls):
cls.savepoint = transaction.savepoint()
... create X instance
@classmethod
def tearDown(cls):
cls.savepoint.rollback()
class LayerY(ZODB):
def setUp(cls):
cls.savepoint = transaction.savepoint()
... create Y instance
@classmethod
def tearDown(cls):
cls.savepoint.rollback()
class MyLayer(LayerX,LayerY): pass
class MyTests(TestCase):
layer = '.MyLayer'
def setUp(self):
self.savepoint = transaction.savepoint()
def tearDown(self):
self.savepoint.rollback()
def test_1(self):
pass
Basically, will the above work or will the savepoints become a horrible
jumbled mess and I end up with several ZODB connections as well?
That's a good question. Looking at the code on the zope.testing trunk,
it looks like this should work.
PS: can I use '.MyLayer' as a layer, or do I always need to put the full
dotted path in?
You have to use a full dotted path. You can also use the
Layer object itself.
Jim
--
Jim Fulton mailto:[EMAIL PROTECTED] Python Powered!
CTO (540) 361-1714 http://www.python.org
Zope Corporation http://www.zope.com http://www.zope.org
_______________________________________________
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com