[Zope3-Users] Calling a view in a doc test

Marius Gedminas mgedmin at b4net.lt
Mon Jun 4 15:49:52 EDT 2007


On Mon, Jun 04, 2007 at 03:14:16PM +0200, Florian Lindner wrote:
> Hello,
> in a doctest I have an object which has a view registered.
> I want to call this view and test for the XML it returns.
> How can I call the view so that it is being rendered, just like called by a 
> browser?

Is that in a unit test, or a functional test?

In a unit test you can do it like this:

    >>> context = ...yourcontentobject...
    >>> from zope.publisher.browser import TestRequest
    >>> request = TestRequest()
    >>> view = MyViewClass(context, request)
    >>> print view()
    <some xml or whatever output here>

If you want to provide, e.g., form parameters, pass them to the request:

    >>> request = TestRequest(form={'foo': u'Lalala\u1234'})

If your view does anything interesting (e.g. use TALES expressions, or
refer to other views like context/@@absolute_url), you will need to
register a whole bunch of components in your doctest setUp methods.
Don't forget to tear them down afterwards.  IIRC you will need

    from zope.app.testing import setup

    def setUp(test):
        setup.placelessSetUp()
        setup.setUpTraversal()

    def tearDown(test):
        setup.placelessTearDown()

at the very least.  Accessing other views, resources, or, god forbid,
forms, will require other component registrations.  At some point you
have two choices: figure out this stuff once and then use copy & paste
(actually, helper functions defined once in your project), or switch to
testing your views with functional tests.

Marius Gedminas
-- 
Cool. Does it also recode ISO10646-1 pcf files into the funny
permutations and subsets used a long time ago in a galaxy far far away
on the planets Isolatinus XV and Koiruski VIII ...
	-- Markus Kuhn inquires about libXft
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://mail.zope.org/pipermail/zope3-users/attachments/20070604/f541be16/attachment.bin


More information about the Zope3-users mailing list