﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
31395	Make TestCase.setUpTestData enforce in-memory data isolation.	Simon Charette	Simon Charette	"[https://groups.google.com/d/msg/django-developers/wOOlWBJYo2Y/FKj7fqPWAgAJ The following is copied from a two years old django-developers thread that received an initial warm welcome].


Since then the [https://github.com/charettes/django-testdata 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."	New feature	closed	Testing framework	dev	Normal	fixed		Adam Johnson	Ready for checkin	1	0	0	0	0	0
