I personally haven't used httpretty, because of the way it had been implemented, I thought it would be impossible for it not to cause bugs in my tests. (Monkey patching socket seems way more complex than patching urllib, or requests)
I am using responses in the CMS Scanner I am building
https://github.com/droope/droopescan
https://github.com/droope/droopescan/blob/master/tests/base_...
I did have to create some helper functions in order to make responses easier to apply to a broad range of tests, those are here:
This one allows you to mock several requests in a more tidy way:
https://github.com/droope/droopescan/blob/2cf3f9fd076124e874...
This one is useful for adding responses.activate to all methods in a class:
https://github.com/droope/droopescan/blob/2cf3f9fd076124e874...
Overall, it works perfectly (and I've been developing with it for at least half a year), and supports python 3.