Opened 5 years ago

Closed 5 years ago

#31308 closed Bug (invalid)

Fixture loading fails when more than one Test case uses same fixtures

Reported by: Lokesh Gurram Owned by: nobody
Component: Testing framework Version: 2.2
Severity: Normal Keywords: Testcases, fixtures
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

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.

Change History (1)

comment:1 by Lokesh Gurram, 5 years ago

Resolution: invalid
Status: newclosed
Note: See TracTickets for help on using tickets.
Back to Top