#31395 closed New feature (fixed)
Make TestCase.setUpTestData enforce in-memory data isolation.
Reported by: | Simon Charette | Owned by: | Simon Charette |
---|---|---|---|
Component: | Testing framework | Version: | dev |
Severity: | Normal | Keywords: | |
Cc: | Adam Johnson | Triage Stage: | Ready for checkin |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
Since then the third-party app implementing this feature has not received much feedback but I know a few developers have been using it and my usage in a few projects didn't surface any issues.
---
Django 1.8 introduced the TestCase.setUpTestData()
class method as a mean to
speed up test fixtures initialization as compared to using setUp()
.
As I've come to use this feature and review changes from peers using it in
different projects the fact that test data assigned during its execution
couldn't be safely altered by test methods without compromising test isolation
has often be the source of confusion and frustration.
While the setUpTestData
documentation mentions this limitation[1] and ways to
work around it by using refresh_from_db()
in setUp()
I believe it defeats
the whole purpose of the feature; avoiding unnecessary roundtrips to the
database to speed up execution. Given TestCase
goes through great lengths to
ensure database level data isolation I believe it should do the same with class
level in-memory data assigned during setUpTestData
.
In order to get rid of this caveat of the feature I'd like to propose an
adjustment to ensure such in-memory test data isolation.
Change History (7)
comment:1 by , 5 years ago
Cc: | added |
---|---|
Version: | 3.0 → master |
comment:2 by , 5 years ago
Has patch: | set |
---|
comment:3 by , 5 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
Triage Stage: | Unreviewed → Accepted |
comment:4 by , 5 years ago
Triage Stage: | Accepted → Ready for checkin |
---|
PR