Opened 7 weeks ago
Last modified 5 weeks ago
#36083 assigned Bug
tests.file_storage.tests can fail when run in isolation — at Initial Version
Description ¶
The full test suite run with multiple threads passes for me, but when I run the tests.file_storage.tests
file in isolation (./runtests.py file_storage.tests
), I get a failure. It passes in isolation if I run the tests with only one thread (./runtests.py --parallel 1 file_storage.tests
). This happened to others when I asked about it in the Django Discord server, but not everyone. For what it's worth, I'm on the latest macOS running Python v3.12.
When a failure happens, I get the following error:
django.core.exceptions.ImproperlyConfigured: AUTH_USER_MODEL refers to model 'auth.User' that has not been installed
I have narrowed the issue down to the fact that this test file contains a class that inherits from LiveServerTestCase
. It seems like any test file that mixes LiveServerTestCase
and something more normal like unittest.TestCase
will fail for me when run in isolation with more than one thread.
Here's a minimal example if anyone is interested:
from unittest import TestCase from django.test import LiveServerTestCase class TestCaseTests(TestCase): def test(self): self.assertEqual(2, 2) class LiveServerTestCaseTests(LiveServerTestCase): available_apps = [] def test(self): self.client.get(self.live_server_url + '/')
I have a fix, but I'm not sure if it's a good one. Setting available_apps = ['django.contrib.auth']
on the LiveServerTestCase
-based class fixes it as one would expect from the error message, but I wonder if this is hiding something like a race condition. I wonder why it passes the full test suite when run with multiple threads, but it can't pass in isolation when run with multiple threads.
Should I open a pull request to fix the test in the way I mentioned above, or is something deeper going on here? It could be that I'm misunderstanding something about how LiveServerTestCase
is isolated during test runs.
According to the ticket's flags, the next step(s) to move this issue forward are:
- For anyone except the patch author to review the patch using the patch review checklist and either mark the ticket as "Ready for checkin" if everything looks good, or leave comments for improvement and mark the ticket as "Patch needs improvement".