I'm writing unit tests for my project that uses Pyramid. What I've done so far is add data and attributes manually to the requests. For example setting an id in the route:
request = testing.DummyRequest()
request.matchdict['id'] = 19
One of my views has multiple routes attached to it, and I determine the route with request.matched_route.name
.
Now when I try to manually set the route like:
request.matched_route.name = 'one_of_my_routes'
or
request.matched_route = {'name': 'one_of_my_routes'}
I get errors. What is the correct way to test this using Python unit tests?
Well this isn't Javascript. You can't make a dictionary and expect to use the dot operator on it. So that's why #2 doesn't work. #1 is likely related to the fact that you need to create each object in the chain. request
only has a matched_route
property if a route matches so you'll need to create that object.
class DummyRoute(object):
name = 'one_of_my_routes'
request.matched_route = DummyRoute()