What if there are multiple connections to multiple guests.  As soon as one is deleted, will it break others (because libvirtd) is restarted?  Another thing that occurred to me is, if a test is using VirshConnectBack, VirshSession, or VirshPersistent they will silently break when a connection is deleted (i.e. any mid-stream restart of libvirtd will do this).  Finally, any exceptions raised during __del__() are ignored, so we may see a warning about ConnServerRestartError, but it won't actually stop execution.  

To handle these, you'll need to add reference counting, and only do some __del__ operations if reference count is zero.  Another idea, and probably the simple solution is make __del__ just clean-up temp  files.  It's okay to rely on the caller to restart libvirtd if/when needed.  It will make debugging hard if __del__ has any side-effects.