[Grok-dev] Re: How to hook up custom layers with z3c.testsetup?
Philipp von Weitershausen
philipp at weitershausen.de
Fri Jun 20 12:35:37 EDT 2008
El 20 Jun 2008, a las 18:15 , Uli Fouquet escribió:
> Philipp von Weitershausen wrote:
>
>> I was just helping out Ivo on IRC setting up some integration tests
>> for
>> his Grok application and I wondered how you hook up doctests to use a
>> custom ZCML-based integration layer with the new z3c.testsetup-based
>> test_suite...
>>
>> Uli, any pointers?
>
> The layer setup might currently not be as sophisticated as it would be
> desirable :-(
>
> When setting up a layer (only one is supported currently),
Then what's the point of the :Test-Layer: thing in the doctest? Just
to indicate whether you use the (implicitly defined?) ZCML-based layer
or not?
Also, I've not managed to make out the difference between the 'python'
and the 'unit' setting for this parameter as described by the README.
> you can use the following parameters:
>
> - `zcml_config`: filesystem path to a ZCML config
>
> Default: any `ftesting.zcml` in the package, that is registered.
>
> Example::
>
> import os
> import z3c.testsetup
> import my.package
> test_suite = z3c.testsetup.register_all_tests(
> 'my.package',
> zcml_config = os.path.join(
> os.path.dirname(my.package.__file__), 'myftesting.zcml'))
>
> will look for a file 'myftesting.zcml' in ``my.package``.
So this file becomes the 'functional' layer that you refer to
from :Test-Layer: ?
> - `layer_name`: string
>
> Registers the layer under the given name.
>
> - `layer`: ZCML layer object
>
> This overrides any of the above options. This way you can define your
> own layer like this::
>
> from zope.app.testing.functional import ZCMLLayer
> mylayer = ZCMLLayer(
> os.path.join(os.path.dirname(__file__), 'ftesting.zcml'),
> __name__,
> 'MyFunctionalLayer')
>
> and call `register_all_tests` afterwards like this::
>
> test_suite = z3c.testsetup.register_all_tests(
> 'my.package', layer = mylayer)
>
>
> More details about this can be found here:
>
> http://svn.zope.org/z3c.testsetup/trunk/src/z3c/testsetup/functionaldoctestsetup.txt
>
> I assume, you were aware of that possibilities,
I read the docs but I was much confused about all the assumptions the
package makes. I think even a medium-sized application will quickly
outgrow these assumptions. For instance, guessing that
:Test-Layer: functional
*implicitly* loads ftesting.zcml didn't even cross my mind for a
second, I thought it was somehow hooked up to FunctionalLayer.
> so there might be something missing. If so, please tell. I am very
> open for proposals, how
> we can improve the usability of the package :-)
I think it could be improved in a very simple way: In doctests, you
simply refer to the dotted name of the layer, e.g.:
:Test-Layer: myapp.tests.IntegrationLayer
z3c.testsetup just finds the doctests, aggregates them, applies the
layer they specify and returns them to the test runner. By default,
there'd be a FunctionalLayer in grokproject (like there's already)
which is being referred to from the minimal test in app.py.
WIth this, people can easily create new layers (just create another
ZCML file, another ZCMLLayer definition in tests.py) and easily hook
them up to their doctests.
What do you think?
More information about the Grok-dev
mailing list