Test database not auto-flushing
|Reported by:||anonymous||Owned by:||nobody|
|Component:||Database layer (models, ORM)||Version:||1.5|
|Severity:||Normal||Keywords:||test database flush inconsistent|
|Has patch:||no||Needs documentation:||no|
|Needs tests:||no||Patch needs improvement:||no|
I have a bunch of unit test files, all of which consist of django.test.TestCase classes.
Wrote myself a little shell script to uncomment/comment test file imports in my __init__.py file, so I can run tests from certain test files, based off the command line arguments I give it. I am also able to run all the tests of all the test files in one go (for regression testing purposes).
I have this one test file that has some JSON fixtures and the first test checks that a certain model/table has 3 records in it (defined by the JSON fixture).
So here is the problem: when I run this test file on its own its tests pass with flying colours, but when I run the test with all other tests, that particular test case I mentioned, fails.
When I run all the tests, the database says there are 6 records in the table/model, but there should only be 3 (from the fixture), like when the test file is run by itself.
I also tried running that test file with a few other test files (not all) and it passes. So the only time it doesn't, is when all the test files are run.
To me this seems like a bug in Django or PostgreSQL (DB I am using), because aren't Django TestCases supposed to auto-flush/reset the database between each test method, let alone test class?
Posted on the "Django users" group first (https://groups.google.com/forum/#!topic/django-users/kCeAEVn8nyw), but haven't got a response yet.
I'm sorry I am not able to divulge information on how to replicate the problem, but it really is as simple as: run all the test files (fails), run single test file (passes).
I was originally using Django 1.4.3, then upgraded to 1.5 (hoping it would fix the problem), but it is still there.