I’m trying to test the functionality of a web app by scripting a login sequence in Python, but I’m having some troubles.
Here’s what I need to do:
- Do a POST with a few parameters and headers.
- Follow a redirect
- Retrieve the HTML body.
Now, I’m relatively new to python, but the two things I’ve tested so far haven’t worked. First I used httplib, with putrequest() (passing the parameters within the URL), and putheader(). This didn’t seem to follow the redirects.
Then I tried urllib and urllib2, passing both headers and parameters as dicts. This seems to return the login page, instead of the page I’m trying to login to, I guess it’s because of lack of cookies or something.
Am I missing something simple?
Thanks.
Focus on
urllib2for this, it works quite well. Don’t mess withhttplib, it’s not the top-level API.What you’re noting is that
urllib2doesn’t follow the redirect.You need to fold in an instance of
HTTPRedirectHandlerthat will catch and follow the redirects.Further, you may want to subclass the default
HTTPRedirectHandlerto capture information that you’ll then check as part of your unit testing.You can then use this
openerobject to POST and GET, handling redirects and cookies properly.You may want to add your own subclass of
HTTPHandlerto capture and log various error codes, also.