Different behaviour for url parameter in dev run versus test run
|Reported by:||Manoj Govindan <egmanoj@…>||Owned by:||Leo|
|Cc:||egmanoj@…||Triage Stage:||Ready for checkin|
|Has patch:||yes||Needs documentation:||no|
|Needs tests:||no||Patch needs improvement:||no|
url(r'^/find_thing/(?P<thing_name>.+)/$', 'django_mi.app.views.find_thing', name = 'find_thing'),
def find_thing(request, thing_name): print thing_name # perform look up of thing and return.
In the development environment (manage.py runserver) the view works well when passed a string with a space in it, say 'my thing'.
The portion of the url representing the parameter shows up as 'my%20thing'.
I then wrote a test for the view using Django's test client. I used the utility reverse() method to pass the path to Client.get().
The test failed (the query set was empty) for identical input.
I added a print statement inside the view. On accessing the view in the development environment the parameter was printed as
'my thing'. However on running the test it was printed as 'my%20thing'. The latter caused the database lookup to return empty.
Why is the behaviour different in development/production and testing?
Change History (10)
comment:1 Changed 6 years ago by Manoj Govindan <egmanoj@…>
- Cc egmanoj@… added
- Needs documentation unset
- Needs tests unset
- Patch needs improvement unset
comment:2 Changed 6 years ago by SmileyChris
- Triage Stage changed from Unreviewed to Design decision needed
Changed 6 years ago by russellm
comment:3 Changed 6 years ago by russellm
- Triage Stage changed from Design decision needed to Accepted
comment:4 Changed 6 years ago by Leo
- Owner changed from nobody to Leo
- Status changed from new to assigned
Changed 6 years ago by Leo
comment:5 Changed 6 years ago by Leo
- Has patch set
- Triage Stage changed from Accepted to Ready for checkin