#31308: Fixture loading fails when more than one Test case uses same fixtures
-------------------------------------+-------------------------------------
Reporter: Lokesh | Owner: nobody
Gurram |
Type: Bug | Status: new
Component: Testing | Version: 2.2
framework |
Severity: Normal | Keywords: Testcases, fixtures
Triage Stage: | Has patch: 0
Unreviewed |
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
-------------------------------------+-------------------------------------
If I have more than one TestCase using the same fixture, loading data
between test cases raises unique constraint violation error on Postgres
(works fine on SQLite)
{{{
class Test1(TestCase):
fixtures = ['fixture.json']
def test_demo(self):
u = User.objects.get(username='testuser1')
#some testing
class Test2(TestCase):
fixtures = ['fixture.json']
def test_demo2(self):
#some testing
pass
}}}
**where my fixture.json is**
Profile table has a one-to-one relation with User table.
{{{
[
{
"model": "app1.user",
"pk": 1,
"fields": {
"password": "",
"last_login": null,
"is_superuser": false,
"username": "testuser1",
"first_name": "",
"last_name": "",
"is_staff": false,
"is_active": true,
"date_joined": "2020-02-21T12:59:17.302Z",
"email": null,
"groups": [],
"user_permissions": []
}
},
{
"model": "app1.profile",
"pk": 1,
"fields": {
"user": 1,
"firebaseID": null,
"phone": null,
"completed_till": 0,
}
}
]
}}}
Running each Test Case separately works fine. But when we run them in one
go, first Test case goes through and before the second test case executes,
I get this error -
{{{
django.db.utils.IntegrityError: Problem installing fixture
'C:\...\app1\fixtures\fixture.json': Could not load app1.Profile(pk=1):
duplicate key value violates unique constraint "app1_profile_user_id_key"
}}}
Any idea why the DB is not completely cleared before trying to load the
fixtures for the next TestCase. I tested this with Django 2.2 on Postgres
10/12. The problem persists in both.
Interestingly though testing on SQLite doesn't give any problem.
--
Ticket URL: <https://code.djangoproject.com/ticket/31308>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/055.206678b0dbf77429e6635752a53ace66%40djangoproject.com.