using DrupalWebTestCase - any trick to prevent it from running from scratch each time?
No, there isn't. Simpletest doesn't know if your last test run was successful, or maybe broke something within the test environment, or if you changed it. That alone would be problematic, beside technical reasons. Also, the really slow part isn't your custom setUp() code but setting up a complete Drupal installation every time.

There are some tricks to improve the speed, however.


Use the testing profile by adding a protected $profile = 'testing'; to your test class. Maybe you need to define a few additional dependencies though, because that only installs the absolutely required modules. This improves test speed ~50%.
Have a single public test*() method, which calls a number of functions. Then you only need a single set-up for the whole test class. However, you need to be aware that your test methods aren't run in a separate environment anymore.
"Hacking" core by changing the default engine from InnoDB to MyISAM. That makes create TABLE statements much faster.
Improve your MySQL configuration, here's my configuration as an example: http://techblog.md-systems.ch/blog/improve-mysql-performance
When actively working on a single test method and the class has multiple ones, disable the others by replacing function test... with function dtest... Don't forget to revert that before committing.


A single test method takes ~10 seconds on my laptop. That's not too bad.