Oooh, good topic, Dave!
I've recently been working on a bunch of new code for Domotics Pad and other projects that involves re-writing the Indigo network interfaces; though this is not the Python for the plugins, I can share a little that might be relevant. First off, you might make a distinction between unit testing and integration testing -- both are important and both have their merits (and there are various semantics here, conventions, etc. that some people do or will argue over, but this is my practical approach to it).
Unit Testing
Test everything that you can possibly and reasonably test... I am not a TDD fiend like some and don't necessarily try for 100% coverage of every single line out there, but there is merit to having coverage over as much as is practical and, importantly, that you want to be able to regression test upon making a change. These tests should be quick (so they can be run before every push to your repo, if not every commit) and everything stay local. Make use of mocked objects/interfaces/etc.
Integration Testing
Honestly, this is a pretty new addition to my code, especially in the Domotics Pad/Indigo world, but it definitely gives me a sense of confidence that things will work "in the real world". My integration tests take longer to run, do actual network and device access, and require a little more setup. If I am going to run these (and this can be automated of course), I make sure that my Dev Indigo Server is in a valid state (in terms of the initial setup) by executing an Action Group which initializes everything to the proper state to begin. Then I allow the tests to run against the dev box; some can self verify in the test itself, so I verify on the Indigo box after the tests complete.
There are many ways to do this, but one easy way is to have two unit test projects - one is for unit tests and one are the unit tests that are acting as integration tests. I could see a similar approach working for plugins -- even potentially having integration tests that hit real devices when practical.
I am curious what others have to say on this topic as I have never done any Python automated testing.... grabbing popcorn and waiting!