This isn't really a unit test: it's some other kind of test... Which means you'll probably have to look outside the normal unit-testing frameworks -- though of course you can use the existing tools to build what you want.
What I'd do is create a brand new test suite away from my normal django tests, and define an attribute in each test that defines its "lifespan": the first and last migrations for which you expect it to pass.
Then, write a script that basically does this:
for m in range(latestMigrationNumber):
name = findNameOfMigrationNumber(m) # look in the migrations directory
executeMigration(name) # os.system(), subprocess.*, etc
runTheTests()
You can use a decorator to specify the "lifespan" for each test, perhaps by extending this "enable/disable" decorator concept to compare the current migration number (which you'd have to store globally somewhere) with the tests you expect to pass, and have it swap the pass/fail result (so if the test passes outside of its lifespan, the decorator makes it fail, and vice versa).
To test the backward migrations, just use the same scheme but run the loop backwards.