Django TestRunner Неверное количество запросов, поврежденные данные Генерал хаос - PullRequest
0 голосов
/ 19 августа 2011

У меня была очень странная проблема.

У меня есть тестовый класс, который является подклассом django.test.TestCase, в котором содержится около 5 различных тестов. Когда я запускаю свой полный набор тестов (использующий нос и указывающий sqlite в качестве бэкэнда), возникает ряд сбоев. Когда я иду на отладку тестов, запускаю их по отдельности, они проходят нормально.

В одном из моих тестов я получаю количество объектов перед добавлением дополнительного объекта. напр.

test_count = TestObject.objects.all().count()
# Add an entry to TestObject
self.assertEqual(test_count + 1, TestObject.objects.all().count()) # should pass

Это сбивало с толку то, что оно будет работать нормально при запуске по отдельности, но не при запуске с другими тестами. В pdb, когда я смотрю на переменные, test_count равно 1, но TestObjects.objects.all().count() равно [] после первой строки.

ipdb> test_count
1
ipdb> TestObject.objects.all()
[]
ipdb> TestObject.objects.all().count()
0

Это происходит прямо во второй строке после присвоения значения test_count, но до добавления другого объекта в TestObject

Когда мой коллега проводит наши тесты, все его тесты проходят нормально.

Кто-нибудь испытывал подобные вещи раньше? Я пытался изменить имена переменных, я думал, может быть, где-то возник конфликт. У меня все вне идей. Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 23 декабря 2011

Согласно сообщению SO, вы видите, что TestObject.objects.all (). Count () возвращают два разных значения при последовательных вызовах.

Это в принципе невозможно, если нет чего-то еще иделать вещи с вашей базой данных.

В качестве альтернативы ваш подкласс TestCase правильно вызывает super (MyTestCase, self) .setUp () и другие методы суперкласса для правильной настройки БД?

Malcolm

опубликовано django-users

...