The triggering of things like this is done in Pyramid's real request pipeline, which you are not simulating here by invoking the view directly. The DummyRequest supports catching finished_callbacks so that you may see what was added to the request, but it does not invoke them.
If you want to simulate things like this you need to make a functional test using something like WebTest that can shove a request through Pyramid's router and invoking all machinery. On Wed, Apr 3, 2013 at 6:34 AM, Tjelvar <[email protected]> wrote: > Dear all, > > I'm not sure if this is the expected behaviour or not. In the > documentation it states that DummyRequests implement add_finished_callback. > > http://docs.pylonsproject.org/projects/pyramid/en/latest/whatsnew-1.2.html > > However, to me it seems like the added callbacks never get called when I > run the tests. > > What I did. > > 1. Created a new "starter" project using pcreate > 2. Modified the __init__.py file to include the lines > > from pyramid.events import NewRequest > from pyramid.events import subscriber > > @subscriber(NewRequest) > def new_request_subscriber(event): > print 'In new request subscriber...' > request = event.request > print 'Request: %s' % request > request.add_finished_callback(finished_callback) > > def finished_callback(request): > print 'In finished_callback...' > > 3. Modified the test_my_view function in the tests.py file > > def test_my_view(self): > from .views import my_view > from pyramid.events import NewRequest > from test_pyramid import new_request_subscriber > request = testing.DummyRequest() > > self.config.testing_add_subscriber(NewRequest) > event = NewRequest(request) > self.config.registry.notify(new_request_subscriber(event)) > > info = my_view(request) > self.assertEqual(info['project'], 'test_pyramid') > > 4. Ran the tests (python setup.py test -q) > > In new request subscriber... > Request: <pyramid.testing.DummyRequest object at 0x8f60a2c> > . > ---------------------------------------------------------------------- > Ran 1 test in 0.008s > > OK > > Note that in the above the finished_callback was never triggered. > > This is a silly example, but the problem is that in my real application I > need the test code to be able to close a handle to a database that I have > opened using the new_request_subscriber. > > Any ideas how I can get the finished_callback to be triggered? > > > > > -- > You received this message because you are subscribed to the Google Groups > "pylons-discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/pylons-discuss?hl=en. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- You received this message because you are subscribed to the Google Groups "pylons-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/pylons-discuss?hl=en. For more options, visit https://groups.google.com/groups/opt_out.
