This looks generally good. You might want to explore mock testing, though (http://www.voidspace.org.uk/python/mock/)