Jeremy,
by definition, each test case (unit or integration) should act upon an
empty application and prepare it's own desirable state.
It isn't good having a test case depending on external data because of
context. By definition, too, a test case should not depend on
execution of other test cases. It must act as if it was the only one
test case at all.
But I'm talking about unit and integration tests. Acceptance tests
(mainly made with selenium) can lay on external data, due to
performance problems.