[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