When you abstract away test code, you are abstracting code written to test a software application's design, and thus your abstractions (and test data) necessarily mirror your application design.
This is why I commented elsewhere that DRY should be applied not as a coding principle to all code, but as a design principle to software design.
We've since gone more DAMP (http://stackoverflow.com/questions/6453235/what-does-damp-no...): tests should be descriptive and meaningful by themselves, not abstract, concise and DRY.
It makes for more lines of test code but they are simpler to understand and adapt.