Django TestCase не удается загрузить данные приспособления с помощью MySQL
Я пытаюсь создать тесты для проверки недавно реализованного процесса входа в систему, однако я застрял в самом начале.
Когда я пытаюсь сделать запрос в своих тестах, Django бросает MySQLdb._exceptions.OperationalError и не может продолжить. Я заметил, что эта проблема возникает только при использовании django.test.TestCase, но не при использовании django.test.TransactionTestCase. Теперь я прочитал, что есть разница между тем, как эти два метода обрабатывают транзакции, но я все еще не могу понять, почему один не работает, а другой работает. Может ли кто-нибудь указать мне правильное направление?
Этот код не работает:
class AuthenticateUserTest(TestCase):
fixtures = ["test_users.json"]
serialized_rollback = True
def test_login_success(self):
print(User.objects.all())
но этот код не делает этого:
class AuthenticateUserTest(TransactionTestCase):
fixtures = ["test_users.json"]
serialized_rollback = True
def test_login_success(self):
print(User.objects.all())
с этим приспособлением:
[
{
"model": "app.user",
"pk": 1,
"fields": {
"created_at": "2022-04-07T13:34:53+01:00",
"email": "test@test.com",
"password": "topsecret",
"is_active": true,
"roles": "[\"SUPER_ADMIN\"]",
"first_name": "Test",
"last_name": "User"
}
}
]
и со следующей ошибкой:
ERROR: test_login_success (tests.auth.test_auth_api.AuthenticateUserTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/app/tests/auth/test_auth_api.py", line 36, in test_login_success
print(User.objects.all())
File "/usr/local/lib/python3.8/site-packages/django/db/models/query.py", line 252, in __repr__
data = list(self[:REPR_OUTPUT_SIZE + 1])
File "/usr/local/lib/python3.8/site-packages/django/db/models/query.py", line 258, in __len__
self._fetch_all()
File "/usr/local/lib/python3.8/site-packages/django/db/models/query.py", line 1261, in _fetch_all
self._result_cache = list(self._iterable_class(self))
File "/usr/local/lib/python3.8/site-packages/django/db/models/query.py", line 57, in __iter__
results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
File "/usr/local/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1155, in execute_sql
cursor.close()
File "/usr/local/lib/python3.8/site-packages/MySQLdb/cursors.py", line 83, in close
while self.nextset():
File "/usr/local/lib/python3.8/site-packages/MySQLdb/cursors.py", line 137, in nextset
nr = db.next_result()
MySQLdb._exceptions.OperationalError: (2006, '')