This issue came up again for me recently: Because the cache is not reset or 
flushed after every test, cache values linger there. This can create 
headaches when writing tests.

I would like to propose that we treat the cache backend(s) like database 
backends during the test run. Specifically, I propose that we:

* Prefix "test_" before the KEY_PREFIX in each backend during global setup. 
This is equivalent to adding the test_ prefix to DB names. In doing this we 
prevent cache calls during test form overwriting possible legitimate values.
* Monkey patch cache.set() (and cache.set_many()) such that we record all 
keys used to set values during a test.
* Use cache.delete_many() on the list of keys we record being set during 
test teardown. This will restore the cache to its previous state after each 
test run. It's better than flush() which clears the whole cache and is too 
destructive to be run during testing.

I don't think it needs to be more complicated than this.

I checked around to see if anyone had opened a ticket related to this or had 
previous discussions on the subject but couldn't find anything. I did 
briefly touch upon this with Russ in a comment thread 
on https://code.djangoproject.com/ticket/15026 and I noticed he made a 
comment in this vein on Django 
Users: https://groups.google.com/forum/#!topic/django-users/OOGO-3MIO_c . If 
there is something already open on this or a decision has already been made, 
please do feel free to point me in the right direction.

Otherwise, if there is interest I'd be happy to open a ticket and get a 
patch started.

Thanks

Jim

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/django-developers/-/dyMCEKilRuMJ.
To post to this group, send email to django-developers@googlegroups.com.
To unsubscribe from this group, send email to 
django-developers+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-developers?hl=en.

Reply via email to